作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 JavaScript Promise 的新手,并尝试解决后续问题:
有一棵树,其节点的结构如下
node: {id, children:node[]}
通过调用接收到一个节点
getNode(id)
其中 getNode 返回 JavaScript Promise
所以我得到一个节点对象
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]}...
???感谢您的回答!
最佳答案
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 - 遍历 javascript promise 树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46863275/
我是一名优秀的程序员,十分优秀!