我是javascript promises的新手,并试图解决后续问题:
有一棵树的节点有这样的结构
node: {id, children:node[]}
通过调用
接收一个节点getNode(id)
其中getNode返回javascript承诺
所以我通过
得到一个节点对象getNode(id).then(function(node) {
id = node.id;
children = node.children;
})
现在我想把整个树放在像
这样的对象中treeObject = getTree(rootNodeId)
所以最后treeObjects的内容应该是例如
{1,children:
[{2,children
[{5,null},{6,null},{7,null]},
{3,children[{8,null},{9,null]}...
??? 谢谢你的回答!
答案 0 :(得分:3)
async function getTree ( id ){
const node = await getNode(id);
node.children = await Promise.all( node.children.map(getTree));
return node;
}
或没有异步等待:
function getTree ( id ){
return getNode(id).then(function(node){
return Promise.all( node.children.map(getTree)).then(function(children){
node.children = children;
return node;
});
});
}
假设 children 是id列表