![](/img/trans.png)
[英]Multiple conditional asynchronous recursive functions and jQuery promises
[英]Promises in recursive asynchronous functions
我想要一个chrome书签并找到其父级,一直到父级书签文件夹。
下面的函数用于获取给定书签的第一个父对象。
function getParent(bookmark) {
var promise = new Promise(function(resolve, reject) {
chrome.bookmarks.get(bookmark.parentId, function(nodes) {
resolve(nodes[0]);
});
});
return promise;
}
我在让所有书签的父母都遇到麻烦。 下面的功能不起作用,但它应该显示我在寻找什么。
function getParents(bookmark, parents) {
var parents = parents || [];
var promise;
getParent(bookmark).then(function(parent) {
if (parent.parentId == '0') {
parents.push(parent);
promise = Promise.resolve(parents);
} else {
parents.push(parent);
getParents(parent, parents);
}
});
return promise;
}
我想我的真正问题是:如何获得在递归异步函数中工作的承诺?
或者,如果您有更好的方法可以这样做,也可以。
只需返回.then
返回的promise .then
然后从.then
回调中返回最终值,或返回另一个promise:
function getParents(bookmark, parents) {
var parents = parents || [];
return getParent(bookmark).then(function(parent) {
parents.push(parent);
return parent.parentId == '0' ? parents : getParents(parent, parents);
});
}
请参阅http://www.html5rocks.com/zh-CN/tutorials/es6/promises/#toc-chaining
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.