本文整理汇总了TypeScript中@pnp/sp.sp.createBatch方法的典型用法代码示例。如果您正苦于以下问题:TypeScript sp.createBatch方法的具体用法?TypeScript sp.createBatch怎么用?TypeScript sp.createBatch使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类@pnp/sp.sp
的用法示例。
在下文中一共展示了sp.createBatch方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的TypeScript代码示例。
示例1:
.then(() => {
//We'll create all the new items in a single batch
let cloneBatch: any = sp.createBatch();
//Process each item
items.forEach((item: any) => {
sp.web.lists.getById(this.context.pageContext.list.id.toString()).items.inBatch(cloneBatch).add(item)
.catch((error: any): void => {
Log.error(LOG_SOURCE, error);
this.safeLog(error);
});
});
cloneBatch.execute()
.then(() => {
location.reload(); //Reloads the entire page since there isn't currently a way to just reload the list view
})
.catch((error: any): void => {
Log.error(LOG_SOURCE, error);
this.safeLog(error);
});
})
示例2: switch
.then((listFields: Array<IListField>): void => {
// We'll request all the selected items in a single batch
let itemBatch: any = sp.createBatch();
//Get an array of the internal field names for the select along with any necessary expand fields
let fieldNames: Array<string> = new Array<string>();
let expansions: Array<string> = new Array<string>();
listFields.forEach((field: IListField) => {
switch (field.TypeAsString) {
case 'User':
case 'UserMulti':
case 'Lookup':
case 'LookupMulti':
fieldNames.push(field.InternalName + '/Id');
expansions.push(field.InternalName);
break;
default:
fieldNames.push(field.InternalName);
}
});
//This will be our cleansed items to clone array
let items: Array<any> = new Array<any>();
//Batch up each item for retrieval
for (let row of event.selectedRows) {
//grab the item ID
let itemId: number = row.getValueByName('ID');
//Add the item to the batch
sp.web.lists.getById(this.context.pageContext.list.id.toString()).items.getById(itemId).select(...fieldNames).expand(...expansions).inBatch(itemBatch).get<Array<any>>()
.then((result: any) => {
//Copy just the fields we care about and provide some adjustments for certain field types
let item: any = {};
listFields.forEach((field: IListField) => {
switch (field.TypeAsString) {
case 'User':
case 'Lookup':
//These items need to be the underlying Id and their names have to have Id appended to them
item[field.InternalName + 'Id'] = result[field.InternalName]['Id'];
break;
case 'UserMulti':
case 'LookupMulti':
//These items need to be an array of the underlying Ids and the array has to be called results
// their names also have to have Id appended to them
item[field.InternalName + 'Id'] = {
results: new Array<Number>()
};
result[field.InternalName].forEach((prop: any) => {
item[field.InternalName + 'Id'].results.push(prop['Id']);
});
break;
case "TaxonomyFieldTypeMulti":
//These doesn't need to be included, since the hidden Note field will take care of these
// in fact, including these will cause problems
break;
case "MultiChoice":
//These need to be in an array of the selected choices and the array has to be called results
item[field.InternalName] = {
results: result[field.InternalName]
};
break;
default:
//Everything else is just a one for one match
item[field.InternalName] = result[field.InternalName];
}
});
items.push(item);
})
.catch((error: any): void => {
Log.error(LOG_SOURCE, error);
this.safeLog(error);
});
}
//Execute the batch
itemBatch.execute()
.then(() => {
//We'll create all the new items in a single batch
let cloneBatch: any = sp.createBatch();
//Process each item
items.forEach((item: any) => {
sp.web.lists.getById(this.context.pageContext.list.id.toString()).items.inBatch(cloneBatch).add(item)
.catch((error: any): void => {
Log.error(LOG_SOURCE, error);
this.safeLog(error);
});
});
cloneBatch.execute()
.then(() => {
location.reload(); //Reloads the entire page since there isn't currently a way to just reload the list view
})
.catch((error: any): void => {
Log.error(LOG_SOURCE, error);
this.safeLog(error);
//.........这里部分代码省略.........