遍历 javascript 承诺树

2024-03-01

我是 javascript 承诺的新手,并尝试解决后续问题:

有一个树,其节点的结构如下

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 列表

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

遍历 javascript 承诺树 的相关文章

  • 在生产中使用 babel-node 可以吗

    我一直在使用 babel node 和 browserify 以及 babelify 转换来开发一个网站 以支持 ES6 语法 我只是想知道 我可以在生产中运行它吗 babel node server 而不是 node server 要在
  • 循环内的局部变量会被垃圾收集吗?

    我想知道将循环内引用的任何变量放在循环外是否更有效 或者它们可以像函数内的变量一样被垃圾收集吗 var obj key val for var i 0 i lt 10 i console log obj or for var i 0 i l
  • 茉莉花单元测试 - 测试对象的未定义属性

    我有以下声明 expect A BAR name toEqual foo 由于我的对象 A 具有顶级属性 BAR 并且 bar 具有值 foo 传递 我想测试我的结构以确认属性 NONEXISTINGPROP 尚未定义 例如 expect
  • NodeJs读取JSON文件

    我正在使用 NodeJs 读取 json 文件 我的代码非常基本 var obj require sample json console log obj 0 Sample json 文件包含这样的字符串化 JSON sample good
  • RequireJS 文本插件和变量连接字符串

    我正在使用 RequireJS 文本插件来加载一些 html 模板 当我将字符串文字传递给 require 函数时 它工作正常 var templateHTML require text templates template name ht
  • 变量前面加双下划线

    我的节点代码中有以下代码片段 var fs require fs fs readdir dirname function err files console log files 为什么变量 dirname 有双下划线 我知道一个下划线是私有
  • JavaScript 原型 - 请澄清

    有人可以帮我理解原型属性吗 我不明白原型属性是函数的属性还是函数内部的属性 假设我们创建以下构造函数 Food 此时 函数 Food 具有 Food prototype 属性 由于 Food 是 Object 的实例 因此这意味着 Obec
  • AngularJS - 服务、工厂、过滤器等中的依赖注入

    因此 我想在我的 Angular 应用程序中使用一些插件和库 目前 我只是引用这些函数 方法 因为它们是在 99 的应用程序中以完全忽略依赖注入的方式使用的 我有 例如 javascript 库 MomentJS 它处理格式化和验证日期 并
  • 如何正确删除动画集中引用的 Raphael SVG 元素?

    我有一组动画 Raphael SVG 元素 我正在通过用户发起的 ajax 调用添加新元素并删除旧元素 我 set push 新元素 但因为我需要删除的元素通常不是集合中的最后一个元素 所以我使用 element remove 而不是 se
  • 全局未在 ../node_modules/socket.io-parser/is-buffer.js 中定义

    预先感谢您帮助我 我正在尝试在我的一个角度组件中连接套接字 但在浏览器的控制台中它会抛出一个错误 指出 Global 未在 Object node modules socket io parser is buffer js 中定义 这是我的
  • 更改特定字符串的颜色

    有谁知道如果将特定单词输入文本区域 我如何更改它的颜色 例如 如果用户输入 你好我的朋友 它会动态地将 你好 更改为绿色 在google上花了很多时间 找不到任何相关的东西 谢谢 textareas 的设计目的不是选择性着色
  • 大型应用的回流/布局性能

    我正在使用 GWT 构建一个 HTML 应用程序 其性能总体上是正确的 有时 它会加载 DOM 中的许多对象 并且应用程序会变得很慢 我使用 Chrome 开发者工具分析器来查看时间花在哪里 在 Chrome 下 一旦应用程序被编译 即没有
  • 我可以在不使用 Jquery UI 的情况下获得 Jquery Pulsate Effect 吗?

    我遇到了由于某种原因无法使用 Jquery UI 的情况 我正在尝试在不使用 Jquery UI 的情况下获得 Jquery UI 脉冲效果 与此链接类似 http docs jquery com UI Effects Pulsate ht
  • 如何上传文件 - sails.js

    我可以下载图像和 pdf 但无法下载文档文件 doc pptx odt 下载文档 doc pptx odt 时 仅将其下载为 ZIP XML 文件 我可以做什么 我在用着 填写上传文件文档 https github com balderda
  • 不可见的 reCAPTCHA - 缺少必需的参数:sitekey

    我正在为每个带有具有类的按钮的表单动态加载不可见的 reCAPTCHAg recaptcha 我遇到的问题是验证码未正确加载 我不知道为什么 我按照验证码网站上的文档进行操作 但我不确定如何以及为什么会出现此错误 Uncaught Erro
  • 如何仅突出显示嵌套表的最里面的表行?

    我有几个嵌套表 我想突出显示鼠标指针下方的最里面的行 我怎样才能做到这一点 一些提示 我使用嵌套表来显示递归表格数据 表可以嵌套 10 层 嵌套正如您所期望的那样 table tr td table tr td table tr td 可能
  • 获取 byte[]

    我有一个 html 画布 如下所示 output is a base64string of image data var oldImage new Image oldImage onload function var resizeRatio
  • 无法从 JSON 请求获取数据,尽管我知道它已返回

    我试图获取从 getJSON 返回的数据 但我无法让它工作 我已经在 search twitter API 上尝试了相同的代码 效果很好 但它不适用于其他网站 我知道数据已返回 因为我在使用检查器时可以找到它 我通过检查器找到的值是 id
  • 角度 ng-repeat 根据条件添加样式

    我在 div 列表上使用 ng repeat 并且在渲染此 div 的 json 中手动添加项目 我需要定位我在 json 中添加的最后一个 div 它会自动在屏幕上渲染 即 couse 光标所在的位置 其余部分保持在相同位置 但没有给出渲
  • 使用 QtWebEngine 将 C++ 对象暴露给 Qt 中的 Javascript

    使用 QtWebkit 可以通过以下方式将 C 对象公开给 JavascriptQWebFrame addToJavaScriptWindowObject如中所述https stackoverflow com a 20685002 5959

随机推荐

  • 具有动态谓词的表的最佳索引

    我想优化SQL Server中下表的查询速度 CREATE TABLE dbo PriceNodeLookupIndex Id int IDENTITY 1 1 NOT NULL PriceNodeId int NOT NULL ItemI
  • 如何解决 TypeError: 无法序列化 float Python Elementtree

    我有一个调试问题 由于我是新来的 请原谅可能的简陋文字墙 经过几个小时我终于得到了elementtree做我想做的事 但我无法输出我的结果 因为 tree write output3 xml 也 print ET tostring root
  • 如何使用 Python 和 web3.py 调用智能合约函数

    我在以太坊测试网络上部署了一个合约 其中包含一些功能 并且它们在使用 Remix 界面时都恰好可以工作 当尝试在 Python 中使用 web3 py 调用这些函数时 我只能调用公共函数 并且该部分工作正常 问题是调用具有 限制 的函数 例
  • 验证 RSA 密钥是否与 Java 中的 X.509 证书匹配

    我有一个 RSA 密钥和一个用于 SSL 连接的 X 509 证书 密钥和证书存储在 PEM 格式的文件中 由 OpenSSL 生成 并在 Apache HTTP 服务器环境中使用 有没有一种简单的方法可以仅使用 Java 代码 不执行 o
  • Swift 中递归调用期间的 BAD_ACCESS

    在玩 Swift 时 我遇到了崩溃的情况 但我仍然不明白为什么 让我们定义 class TestClass var iteration Int 0 func tick gt Void if iteration gt 100000 print
  • Durandal Compose:激活方法并不总是被调用

    在 SPA 中 我有一个视图 其中使用 compose 绑定包含另一个视图 该子视图 子视图 有一个 activate 方法 该方法在加载父视图时被调用 div div 但是 当我离开父视图然后返回到它 不刷新浏览器 时 子视图中的 act
  • 子路由上的页面重新加载

    Using Angular 2 路由器 https angular io docs ts latest guide router html 我有一个 2 级路由 root routing and child routing 我的问题是 当导
  • 是否可以从仅公开迭代器的“readNext”部分的对象创建流?

    我尝试从 csv 文件中读取数据 但由于其大小 没有先将其全部加载到内存中 我找到的用于读取 csv 的库是opencsv 效果非常好 但只公开了两个方法 readAll and readNext readAll已经出来了 因为我不想同时将
  • GitHub API:如何检查组织名称的可用性?

    我可以向 GitHub API 发送 HTTP 请求 以自动创建新的或删除存储库 删除存储库等 例如 我可以创建一个新的存储库 如下所示 curl user user https api github com user repos d na
  • 如何在 AuditorAware 中获取 Keycloak 用户名

    我已经使用 Spring Data JPA 实现了审计 完全遵循本文档 https www baeldung com database auditing jpa 当我运行应用程序时 一切正常 但是当我将 WAR 部署到 Tomcat 并尝试
  • Android 存储库模式

    我有几个关于存储库模式的问题 如果我仅使用离线数据库 例如带有 LiveData 的 Room 是否可以使用存储库模式 如果我的应用程序现在处于离线状态 但将来会连接到远程数据库 我是否应该实现存储库模式 或者稍后执行它不会成为问题 首先
  • 使用 matplotlib 在多个子图之外添加图例

    我正在制作一些人物 其中每个人物都有不同数量的子图 我试图在右下角添加图例 但遇到了一些麻烦 我尝试在右下角添加一个新的子图 并仅向其添加图例 但图例后面有一个空的子图 这就是我现在站的地方 但无论最后一个子图在哪里 都希望图例位于右下角
  • UITableView :cellForRowAtIndexPath 继续被调用

    我有一个 UITableView 控制器和一个 UITableView 我已经使用代表等设置了所有内容 并且填充得很好 然而 我发现使用以下方法有一个小错误 cellForRowAtIndexPath 我注意到每次滚动表格时都会不断调用此方
  • 尝试在目标设备上运行交叉编译的可执行文件失败,并显示:没有这样的文件或目录

    我陷入了交叉编译的不那么阳光的世界 我正在尝试为我的 BeagleBone Black 运行 TI Cortex A8 处理器 编译一个简单的 hello world 应用程序 首先 我在 x86 上编译并成功运行了 hello world
  • 如何将 System.Windows.Controls 类型转换为 System.Windows.Forms wpf

    我正在尝试 TypeCastWindows Controls to Windows Form但变得为空 private void treeView MouseLeftButtonDown object sender MouseButtonE
  • 如何在 MATLAB 中将字符串解析为字母、数字等?

    我有一串这样的字符 12hjb42 34ni3 在 MATLAB 中 我想通过正则表达式或其他更简单的方法来分隔数字和字母以及其他所有内容 我怎样才能做到这一点 我认为使用函数代替正则表达式会更容易ISSTRPROP http www ma
  • 在纸上以精确尺寸打印 MATLAB 绘图

    我有一个绘图需要以精确的尺寸打印在纸上 因为它是按比例绘制的 并且可以从纸上测量一些东西 最简单 是否可能 的方法是什么 EDIT create some plot and make axis fill entire figure plot
  • 如何在 Visual C# 中制作 Windows 95 风格的按钮?

    我正在编写一个程序 我只是好奇如何放置看起来像 Windows 95 中的按钮 source aos co za http www aos co za 98 win95servertypes gif 我正在使用带有 Winforms 的 V
  • 可编码:不符合“可解码”协议

    无法弄清楚为什么我的课程不符合 Codable 请注意 就我而言 我不需要实现这些方法encode and decode public class LCLAdvantagePlusJackpotCache Codable public le
  • 遍历 javascript 承诺树

    我是 javascript 承诺的新手 并尝试解决后续问题 有一个树 其节点的结构如下 node id children node 通过调用接收一个节点 getNode id 其中 getNode 返回一个 JavaScript Promi