我正在尝试创建 Promise 数组,然后使用 Promise.all() 解析它们。我正在使用 got,它返回一个承诺。
我的代码可以工作,但我不完全理解如何工作。这里是:
const got = require('got');
const url = 'myUrl';
const params = ['param1', 'param2', 'param3'];
let promiseArray = [];
for (param of params) {
promiseArray.push(got(url + param));
}
// Inspect the promises
for (promise of promiseArray) {
console.log(JSON.stringify(promise));
// Output: promise: {"_pending":true,"_canceled":false,"_promise":{}}
}
Promise.all(promiseArray).then((results) => {
// Operate on results - works just fine
}).catch((e) => {
// Error handling logic
});
让我失望的是,当我将 Promise 添加到数组中时,它们被标记为“pending”,这意味着它们已经开始了。
我认为他们应该不活跃promiseArray
, and Promise.all(promiseArray)
都会启动它们并解决它们。
这是否意味着我要启动它们两次?
你不会启动它们两次。一旦创建 Promise,或者一旦 JS 引擎找到足够的资源来启动它们,Promise 就会开始运行。您无法控制它们何时真正开始。
All Promise.all()
要做的就是等待所有这些都解决(解决或拒绝)。Promise.all()
不干扰或影响承诺本身的执行顺序/时间。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)