要求是使用 JavaScript 从 SharePoint 库中的数组创建文件夹结构。以下是所需的结构:
var ary = [A,B,C]
A -> Fldr1 -> Fldr2 -> File
B -> Fldr1 -> Fldr2 -> File
C -> Fldr1 -> Fldr2 -> File
但目前它在库中创建文件夹 A、B 和 C,但内部结构仅为 C 创建。
所以得到的结果是:
A
B
C -> Fldr1 -> Fldr2 -> File
当数组中只有一项时,下面的代码可以完美运行,但当数组中有多个项时,代码会失败。 在这里,我检查文件夹是否存在,然后检查第二级,如果不存在,则首先创建,依此类推以获取剩余结构。
async function processArray(selectedCountries) {
await selectedCountries.map(async (item) => {
let promiseCntry = await checkCntryFolder(item);
if(flag){ //if cntry exists
let promiseChckfolder = await checkFolder(tdmrkNm);
if(flagFldr)//if folder exists
{
let promiseChkSubFolder = await checkSubFolder(appStatus);
if(flagSub)//if sub -folder exists
{
let createFile = await CreateFileInSideFolder();
}
else
{
let promiseCreateSub = await createSubFolder(appStatus);
let createFile = await CreateFileInSideFolder();
}
}
}
});
}
}
最佳答案
停止使用 deferreds 并停止使用 done
方法。使用适当的 Promise 和 then
来代替。
假设这是 jQuery,其中那些具有 done
方法的对象也具有 then
方法,您可以(并且应该)只使用 async
/直接等待
:
async function callAry(array) {
return Promise.all(array.map(async (item) => {
const flag = await checkCntryFolder(item);
if (flag) {
const folderFlag = await checkFolder(nm);
if (folderFlag) {
const subFlag = await checkSubFolder(Status);
if (subFlag) {
await CreateFileInSideFolder();
console.log('file done');
}
}
}
}));
}
关于javascript - 使用 JavaScript 在 SharePoint 库中创建文件夹结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57928378/