遍历javascript承诺树 [英] Traversing javascript promises tree
本文介绍了遍历javascript承诺树的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我是javascript promises的新手并尝试解决后续问题:
I am new to javascript promises and tried to solve the subsequent problem:
有一个树的节点有这样的结构
There is a tree with nodes that have a structure like this
node: {id, children:node[]}
通过调用收到一个节点
getNode(id)
其中getNode返回一个javascript承诺
where getNode returns a javascript promise
所以我得到一个节点对象
so I get one node object by
getNode(id).then(function(node) {
id = node.id;
children = node.children;
})
现在我想将整个树放在一个对象中,如
Now I want to get the whole tree in one object like
treeObject = getTree(rootNodeId)
因此,最后treeObjects的内容应为例如
so that in the end contents of treeObjects should be for example
{1,children:
[{2,children
[{5,null},{6,null},{7,null]},
{3,children[{8,null},{9,null]}...
???
谢谢你的答案!
??? thanks for any answers!
推荐答案
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列表
这篇关于遍历javascript承诺树的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文