【发布时间】:2016-06-23 04:45:30
【问题描述】:
原生 Javascript ES5/ES6 承诺
我正在尝试导入具有递归关系的数据,因为 数据库(mongodb)正在分配 ids - 必须加载父级(异步) 在它的孩子可以加载之前(也是异步的)。
例如,此任务列表中的任务 B。
任务 A - 一些过程
任务 B - 递归异步加载(面包优先遍历)
任务 C - 依赖于任务 B
请注意,因为任务 C 在任务 B 完成之前无法启动,我假设 需要构建一个承诺链,在完成之前不会退出。
假设正在构建的链看起来像这样: (这棵树只有一个头)
promiseParent.then(Promise.all(childrenPromises.then(Promise.all(grandChildrenPromsies.then(....)))))
我想它会像广度优先队列一样遍历(最好我会 如果可能的话,想尽量避免使用队列数据结构)
我发现这个很难破解。任何建议或 解决方案?
【问题讨论】:
-
你不把它锁起来吗?
taskA.then(function() { return taskB() }).then(... -
任务 B 是挑战。任务 B 需要在调用任务 C 之前递归地构建一个要完成的承诺链。任务 A 无关紧要(仅显示在调用 B 之前发生的事情。@BlakesSeven
-
我没有发表评论。 @adeneo 做到了。我所做的只是删除了 mongodb 标签(大概是由神奇的 stackexchange 问题编辑器自动插入的!),因为它确实与所有关于 promises 的问题没有具体关系。
-
注意到但为时已晚,抱歉 Blake - 是的,我猜它与 Mongodb 社区不太相关。
-
我的意思是,你不必嵌套它们,你可以把它们链起来
标签: javascript promise es6-promise