![](/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.