У меня есть рекурсивная функция, и я пытаюсь заставить ее работать последовательно, возвращая обещание каждый раз. Код рекурсивный и работает хорошо, но работает только для первого элемента цикла for.вернуть обещание изнутри цикла for
Пример:
- папку: 1 - OK
- папки: 11 - OK
- папка: 111 - OK
- папка: 111 - OK
- папка: 2 - NOT OK
- Папка: 12 - НЕ ОК
- Все асинхронные загрузки завершены в последовательности.
Я думаю, что это потому, что, когда я возвращаю обещание изнутри, тогда цикл for прерывается.
function CopySubFolders(folder, destFolder) {
// Recursively copy each subfolder
return folder.getFoldersAsync()
.then(function (folderlist) {
if (folderlist.size > 0) {
for (var i in folderlist) {
var replace = Windows.Storage.CreationCollisionOption.replaceExisting;
console.log("create folder: " + folderlist[i].name);
return destFolder.createFolderAsync(folderlist[i].name, replace)
.then(function (newdest) {
return CopySubFolders(folderlist[i], newdest);
});
}
}
else {
return WinJS.Promise.as();
}
});
}
CopySubFolders(folder, self.localFolder)
.then(function() {
completeFunc("Done");
console.log("All asynchronous downloads completed in sequence.");
})
Любая идея, как вернуть обещание без прерывания цикла for?
PS: Если я использую forEach loo, это не прервется, но тогда я потеряю способность возвращать папки в последовательности.
Пример:
- папку: 1 - OK
- Все асинхронные загрузки завершены в последовательности.
- папки: 11 - OK
- папка: 111 - OK
- папка: 111 - OK
- папка: 2 - OK
- папки: 12 - OK
жаль, что я добавил часть, обрежь folderlist –