gpt4 book ai didi

javascript - 为什么我的 Promise 数组在调用 Promise.all() 之前运行?

转载 作者:可可西里 更新时间:2023-11-01 02:31:21 25 4
gpt4 key购买 nike

我正在尝试创建一个 Promise 数组,然后使用 Promise.all() 解决它们。我正在使用 got,它返回一个 promise 。

我的代码可以工作,但我不完全理解如何工作。在这里:

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
});

让我失望的是,当我将 Promises 添加到数组中时,它们被标记为“待定”,这意味着它们已经开始。

我认为它们应该在 promiseArray 中处于非事件状态,而 Promise.all(promiseArray) 将启动它们并解析它们。

这是否意味着我要启动它们两次?

最佳答案

您不会启动它们两次。 Promise 在创建后立即开始运行 - 或者一旦 JS 引擎找到足够的资源来启动它们。您无法控制它们何时真正开始。

所有 Promise.all() 所做的就是等待它们全部解决(解决或拒绝)。 Promise.all() 不会干扰或影响 promise 本身的执行顺序/时间。

关于javascript - 为什么我的 Promise 数组在调用 Promise.all() 之前运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47622331/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com