【发布时间】:2017-11-22 00:33:06
【问题描述】:
我不熟悉承诺。我必须遍历从其getNode 函数返回承诺的树。我已经使用prom.then(....) 成功找到了对 root 的第一次调用。
但是,下一步不起作用。具体来说,递归调用返回 undefined 就行了:
leftTree = inOrderPromise(ptree,leftIndex);
代码再次正确调用该函数,并将正确的节点放入根目录,但我不知道如何组合我的答案。我该怎么做?
TYIA
PromiseTree.prototype.getNode = function (index, callback) {
return Promise.resolve(this.data[index]);
};
var inOrderPromise = function(ptree, rootIndex){
var prom = ptree.getNode(rootIndex,function(){});
prom.then(function(root){
var leftTree = [];
if(root.left){//if node has a left, recursively traverse
var leftIndex = root.left;
leftTree = inOrderPromise(ptree, leftIndex);
}
var rightTree = [];
if(root.right){//if node has a right, recursively traverse
var rightIndex = root.right;
rightTree = inOrderPromise(ptree, rightIndex);
}
//results: leftTree, root, rightTree
console.log(leftTree.concat(root.value).concat(rightTree));
return leftTree.concat(root.value).concat(rightTree);
});
}
【问题讨论】:
-
你为什么要承诺一个同步的功能?哦,还有一个提示,如果你想让一个函数返回一些东西,它需要
returnsomething
标签: javascript recursion promise