【发布时间】:2017-06-30 00:52:13
【问题描述】:
我有一个函数 foo(),它包含一个在 for 循环中解析的 Promise。我想运行 foo() 几次,每次都给它不同的参数。然后我想用所有这些的结果做点什么。 Promise.all() 会在 for 循环结束时运行,还是在 foo() 内的所有 Promise 返回后运行?或者它会说“这些 foo() 都不是 Promise!”还笑我?
var foo = (x) => {
for (var i = 0; i < 100; i++) {
someOtherFunctionThatReturnsAPromise(x).then(returnSomething());
}
};
function nowDoEverything() {
return Promise.all([foo(1), foo(2), foo(3)]).then(doSomethingWithAllThoseReturnedValues());
}
nowDoEverything();
foo() 是否需要返回一个 Promise?如果是这样,考虑到 foo() 内部的 Promises 是在 for 循环内生成的,我该怎么做?
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise/all 声明 “Promise.all(iterable) 方法返回一个当可迭代参数中的所有承诺都已解决时解决的承诺,或者以第一个被拒绝的承诺的原因拒绝。”
这个视频https://www.youtube.com/watch?v=RRgAdi3gX-s 非常擅长解释基本的 Promise,但我似乎正在尝试做一些架构师没有打算/期望的事情。
【问题讨论】:
标签: javascript promise