gpt4 book ai didi

javascript - 如何将此代码转换为链式 promise ?

转载 作者:行者123 更新时间:2023-11-29 19:13:01 25 4
gpt4 key购买 nike

我想创建一个 JS 代码来创建许多嵌套页面。这是一个创建 5 个嵌套页面(5 个深度级别)的示例

var self = this;
var parentPageId = 1; // this is initial data.

// 1
this._genPage(spaceKey, parentPageId).done(function (createdPage) {
// 2
self._genPage(spaceKey, createdPage.id).done(function (createdPage) {
// 3
self._genPage(spaceKey, createdPage.id).done(function (createdPage) {
// 4
self._genPage(spaceKey, createdPage.id).done(function (createdPage) {
// 5
self._genPage(spaceKey, createdPage.id).done(function (createdPage) {
Util.showSuccessMessage('Data Generated: 5 nested pages');
});
});
});
});

如何转换以上代码来创建任意数量的嵌套页面?目前,我正在使用 jQuery。如果您建议任何 Promise 库来解决这个问题,那很好。

谢谢。

最佳答案

promises 被设计成链式的,你从一个 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);
});

关于javascript - 如何将此代码转换为链式 promise ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37410442/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com