저는 재귀 함수를 가지고 있으며 매 번 약속을 되 돌리는 순서로 실행하려고합니다. 코드는 재귀 적이며 잘 작동하지만 for 루프의 첫 번째 항목에서만 작동합니다.내부에서 for 루프를 사용하여 약속을 반환합니다.
예 :
- 폴더 : 1 - OK
- 폴더 : 11 -
- 폴더 OK -
- 폴더 OK 111 : 111 - OK
- 폴더 : 2 - OK NOT
- 폴더 : 12 - NOT OK
- 모든 비동기 다운로드가 순서대로 완료되었습니다.
내가 내부에서 약속을 되 돌리면 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 루프를 중단하지 않고 약속을 되 돌리는 방법을 알고 싶습니다.
추신 : 내가 forEach loo를 사용하면 중단되지는 않지만 순차적으로 폴더를 반환하는 기능이 느슨합니다.
예 :
- 폴더 : 1 - OK
- 순서대로 완료 모든 비동기 다운로드 .
- 폴더 : 11-
- 폴더 OK : -
- 폴더 OK 111 : 111 - OK
- 폴더 : 2 - OK
- 폴더 : 12 - OK
죄송 내가 감소와이 솔루션을 시도합니다 folderlist에게 –