【发布时间】:2015-06-15 07:33:08
【问题描述】:
这个问题被问过很多次,但并不那么简单。
如何重写这个 Promise.all 以使 promise1 在 promise2 之前完全运行?
var promise1 = function() { .. lots of promise stuff };
var promise2 = function() { .. lots more promise stuff };
Promise.all([promise1, promise2]).then(function() {
log.info("ran promise1 & promise2");
});
Promise.all 并行运行 promise1 和 promise2。
【问题讨论】:
-
each不是连续运行它们吗?我不记得了。 -
@DaveNewton 是的,但是 .each 产生:
Unhandled rejection TypeError: fn must be a function -
Promise.all既不“运行承诺”,也不调用函数。你的例子甚至都行不通。 -
是的,这个问题已经被问过很多次了。你为什么要发布另一个“更简单”的帖子?您是否尝试过其他答案的解决方案?请向我们展示这些尝试。
-
这个问题毫无意义,因为您告诉提供答案的人
promise1()未定义。如果您甚至愿意查看Promise.all()的文档,那么应该非常清楚它需要一组承诺,所以在您的函数返回承诺并且您调用它们并将返回值传递给Promise.all()之前,这将永远不会起作用。稍微研究一下文档,然后实现它所说的功能所需的内容,将为您节省大量时间。
标签: javascript node.js asynchronous promise bluebird