我有一个包含在异步方法中的递归方法:
var loadWebsRecursively = function (url) {
loadWebsDeferred(url).then(function (webs) {
var wE = webs.getEnumerator();
webCount += webs.get_count();
while (wE.moveNext()) {
var site = wE.get_current();
var title = site.get_title().toLowerCase();
var fqdn = siteRootUrl + site.get_serverRelativeUrl() + '/';
.... // additional work
}
webProcessed++;
loadWebsRecursively(fqdn);
}
};
我需要一些关于如何确定所有递归调用都已完成的建议。每个Web可以有“N”个子网。
提前致谢!
答案 0 :(得分:0)
您似乎正在寻求解决承诺序列。如果您正在使用javascript的本机ES6承诺实现,那么您可能正在寻找以下内容:
// Loop through our chapter urls
story.chapterUrls.reduce(function(sequence, chapterUrl) {
// Add these actions to the end of the sequence
return sequence.then(function() {
return getJSON(chapterUrl);
}).then(function(chapter) {
addHtmlToPage(chapter.html);
});
}, Promise.resolve());
有关详细信息,请参见此处:
http://www.html5rocks.com/en/tutorials/es6/promises/#toc-parallelism-sequencing