javascript - 遍历 javascript promise 树

标签 javascript promise

我是 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/

相关文章:

javascript - 是否有 ActionScript 3 到 JavaScript(反之亦然)的迁移指南?

node.js - 调用 "then"时 Promise 挂起

javascript - Pebble JS、GitHub 和图像资源

javascript - 当列表长度未知时依次调用http.get

mongoose - 何时使用 denodeify/nfbind 与 nfcall/ninvoke

javascript - 根据之前的模糊禁用焦点

javascript - 使用返回的 promise 数据

javascript - 查看xml是否有属性和值

javascript - 如何更改脚本生成的 HTML 中的属性?

javascript - 用于文本输入的质量代码