【发布时间】:2016-07-05 10:26:21
【问题描述】:
下面有一个代码示例,我想在所有承诺解决后从“主”函数返回 baz 变量。
exports.foo = function(bar) {
var baz;
// some kind of promises are here forming array of promises p
// some of promises may change the baz variable
Promise.all(p).then(() => {
// returning expression for main function is here
// return baz here // does not work
});
// return baz //cannot be done because it would be earlier than all the async promises are resolved
}
【问题讨论】:
-
foo() 不返回任何内容。您必须返回 Promise.all.then 并在调用者方法中处理承诺。
-
最好将 promise 链解析为
baz并继续在 promise 链中工作。 -
有人告诉我这只是因为伪代码编写,但它非常至关重要:它实际上是
return Promise.all(p).then(() => {吗?没有return,它总是会返回未定义的。 -
一个重要的事情是,你不能从一个执行异步活动的函数同步返回值
-
只为
baz返回一个承诺!return Promise.all(…).then(…);
标签: javascript node.js return promise es6-promise