【发布时间】:2018-05-11 12:13:57
【问题描述】:
我有一个带有一组 promise 的函数,该数组可以有 1 到 X 个 promise。
这些承诺基于条件进入数组。
我希望能够区分每个结果来自哪个 API,但我无法实现一种干净的方式来做到这一点
let promises = [];
if (false) {
let promise1 = request(toUrl);
promises.push(promise1);
}
if (true) {
let promise2 = request(toUrl);
promises.push(promise2);
}
if (false) {
let promise3 = request(toUrl);
promises.push(promise3);
}
if (true) {
let promise4 = request(toUrl);
promises.push(promise4);
}
try {
let result = await Promise.all(promises);
} catch (error) {
console.log(error);
}
所以,如果一切顺利,结果将是一个结果数组。不知道哪一个条件为真,我怎么知道 result[0] 是 promise1、promise2 还是 promise3 的结果?
【问题讨论】:
-
为什么不有条件地将 url 推送到数组?然后简单地
Promise.all (urls.map (request)) -
添加网址不会给他
Promise.allthen请求完成的网址 -
@Suren Srapyan 你错了,请参考 MDN。 developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
-
我的意思是,在得到结果后,你得到了 url 数组的结果,但你不知道究竟有哪些 url。我的意思是
urls添加到带有条件的数组中。是的,如果解决了所有问题,您都拥有,但实际上哪些网址被添加到您无法在 Promise.all 检测到的数组中
标签: javascript promise async-await