Javascript 如何将此代码转换为链接承诺?
我想创建一个JS代码来创建许多嵌套页面。下面是创建5个嵌套页面(5个深度级别)的示例 如何转换上述代码以创建任意数量的嵌套页? 目前,我正在使用jQuery。如果您建议任何Promise库来解决此问题,这是很好的Javascript 如何将此代码转换为链接承诺?,javascript,jquery,promise,Javascript,Jquery,Promise,我想创建一个JS代码来创建许多嵌套页面。下面是创建5个嵌套页面(5个深度级别)的示例 如何转换上述代码以创建任意数量的嵌套页? 目前,我正在使用jQuery。如果您建议任何Promise库来解决此问题,这是很好的 谢谢。简单的递归就可以了 function createNestedPages(spaceKey, parentPageId, numberOfPages) { if (numberOfPages <= 0) { return; } this._genPag
谢谢。简单的递归就可以了
function createNestedPages(spaceKey, parentPageId, numberOfPages) {
if (numberOfPages <= 0) {
return;
}
this._genPage(spaceKey, parentPageId).done(function (createdPage) {
createNestedPages(spaceKey, createPage.id, numberOfPages - 1);
});
}
函数createNestedPages(空格键、parentPageId、numberOfPages){
如果(numberOfPages承诺被设计为链接,那么从一个done
返回的内容将由链中的下一个done
解决:
this._genPage(spaceKey, parentPageId)
.done(function (createdPage) {
return self._genPage(spaceKey, createdPage.id);
}).done(function (createdPage) {
return self._genPage(spaceKey, createdPage.id);
}); // etc
可以进行一些简单的递归(甚至循环),使其达到任意深度
function genPagesRecursive(spaceKey, id, depth){
if(depth == 0){
return 'Data Generated';
}
return self._genPage(spaceKey, id).done(function(createdPage){
return genPagesRecursive(spaceKey,id,--depth);
})
}
您甚至可以在调用递归方法时链接另一个done
:
genPagesRecursive(spaceKey, creadtedPage.id, 5).done(function(msg){
Util.showSuccessMessage(msg);
});
使用递归怎么样?你的意思是return genPagesRecursive(spaceKey,id,--depth)
在递归示例中完成了吗?@ste2425谢谢-中途更改了方法名称。我测试过,效果很好。谢谢@Jamiec。我没有足够的分数来投票给答案:(
genPagesRecursive(spaceKey, creadtedPage.id, 5).done(function(msg){
Util.showSuccessMessage(msg);
});