举个例子,我有三个承诺。一个需要1000毫秒才能解决,另一个需要2000毫秒才能解决;第三个需要3000毫秒才能解决。
我如何在同一时间履行所有承诺,并在承诺发生时处理每一个已解决的承诺。
例如。
let fastPromise = new Promise((resolve, reject) => {
setTimeout(() => resolve(""), 1000);
});
let mediumPromise = new Promise((resolve, reject) => {
setTimeout(() => resolve(""), 2000);
});
let slowPromise = new Promise((resolve, reject) => {
setTimeout(() => resolve(""), 4000);
});
在这种情况下,我想同时开始所有三个承诺,并在它们解决时按顺序处理它们。即处理fastPromise,然后处理mediumPromise,再处理slowPromise。
如果出于某种原因,您正在寻找一种为所有Promises提供某种通用处理程序的方法,您可以这样做:
const fastPromise = new Promise((resolve, reject) => {
setTimeout(() => resolve("fast"), 1000);
});
const mediumPromise = new Promise((resolve, reject) => {
setTimeout(() => resolve("medium"), 2000);
});
const slowPromise = new Promise((resolve, reject) => {
setTimeout(() => resolve("slow"), 4000);
});
function commonHandler(result) {
console.log(result);
}
[fastPromise, mediumPromise, slowPromise].forEach((p) => p.then(commonHandler));
(别忘了以同样的方式添加.catch()
(。
然而,如果你只想激发X Promises,并在它们解析时使用X处理程序来处理它们,那么。。。这是默认的Promise行为,除了向每个Promise添加.then()
之外,没有什么可做的。