【发布时间】:2019-10-26 13:09:04
【问题描述】:
我试图弄清楚 Promise.all 是如何工作的。 我的问题是:可以将 Promise.all() 中间的新承诺推送到之前传递的同一个数组中吗? 例如,我有这段代码可以正常工作: https://jsfiddle.net/artheg/z0Lndw1o/14/
const promises = [];
const promise1 = new Promise(function(resolve, reject) {
resolve('promise1');
const promise2 = new Promise(function(resolve, reject) {
resolve('promise2');
});
pushPromise(promise2); // Pushing promise2 to the same array after the promise1 was resolved
});
pushPromise(promise1); // Pushing promise1
function pushPromise(promise) {
promises.push(promise);
}
Promise.all(promises).then(function(values) {
console.log(values); // Array [ "promise2", "promise1" ]
});
这种行为是有意的,还是我应该总是用 .then() 链接 Promise 而不是将新的 Promise 推入数组?
【问题讨论】:
-
您的代码没有在“在 Promise.all() 中间”的数组中添加 Promise。它完全构建数组,然后在完成后将其传递给 Promise.all()。
标签: javascript promise