gpt4 book ai didi

javascript - Promise.all()的回调什么时候触发

转载 作者:行者123 更新时间:2023-12-03 04:07:53 25 4
gpt4 key购买 nike

我刚刚学习了 Promise.all() 的概念,对其机制很好奇。根据我对 Promise 的有限了解,它在 .then() 方法中传递回调函数并在定义中调用它。例如:

var p = new Promise((resolve) => {
setTimeout(resolve, 2000);
setTimeout(() => {
console.log('4 sec function');
}, 4000);
});

p.then(() => {
console.log('2 sec function');
});

// result:
// 2 sec function
// 4 sec function

但是,当我们使用 Promise.all() 时,它会在所有 Promise 完成时触发回调。正如我的猜测,它触发了最终履行的 promise 中的回调。在下面的例子中,我对结果的看法是“四”。但是,它会打印四个数字的数组。为什么会出现这种情况?更具体地说:

  1. 回调实际触发了多少次?

  2. 回调在 Promise 定义的哪个位置触发?

  3. 传递给回调的值是什么?

这是我研究的代码:

var p1 = new Promise((resolve, reject) => {
setTimeout(resolve, 1000, 'one');
});
var p2 = new Promise((resolve, reject) => {
setTimeout(resolve, 2000, 'two');
});
var p3 = new Promise((resolve, reject) => {
setTimeout(resolve, 3000, 'three');
});
var p4 = new Promise((resolve, reject) => {
setTimeout(resolve, 4000, 'four');
});

Promise.all([p1, p2, p3, p4]).then(values => {
console.log(values);
});

// print:
// one
// two
// three
// four

最佳答案

  1. 回调触发一次。

  2. 当所有 promise 都得到解决或其中一个 promise 失败时。

  3. 它接收所有 Promise 解析到的值的数组。

关于javascript - Promise.all()的回调什么时候触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44468293/

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