Skip to main content

Promise 静态方法

Promise.resolve(data)

直接把一个任务变成完成状态(fulfilled)

Promise.resolve()等价于下面代码

const p = new Promise((resolve) => {
resolve();
});

Promise.reject(reason)

直接把一个任务变成失败状态(rejected)

Promise.reject() 等价于下面代码

const p = new Promise((resolve, rejected) => {
rejected();
});

Promise.all([...task])

返回一个 Promise 任务数组里面全部成功才会成功 如果有一个失败就会失败

const p = Promise.all([
Promise.resolve(1),
Promise.resolve(2),
Promise.resolve(3),
]);

p.then((data) => {
//[1,2,3]
console.log(data);
});

Promise.any([...task])

返回一个 Promise 任务数组里面有一个成功就会成功 如果有一个失败就会失败

const p = Promise.any([
Promise.resolve(1),
Promise.reject(2),
Promise.resolve(3),
]);

p.then((data) => {
// 1
console.log(data);
});

Promise.allSettled([...task])

返回一个 Promise 数组里面的所有任务状态不是挂起状态(pending) 则成功

const p = Promise.allSettled([
Promise.resolve(1),
Promise.reject(2),
Promise.resolve(3),
]);

p.then((data) => {
// [
// {
// status: "fulfilled",
// value: 1,
// },
// {
// status: "rejected",
// value: 2,
// },
// {
// status: "fulfilled",
// value: 2,
// },
// ];
console.log(data);
});

Promise.race([...task])

返回一个 看任务数组里面 哪个任务里面有结果 就返回谁

// 可以用作fetch的超时处理
const p = Promise.allSettled([
Promise.resolve(1),
new Promise((reject) => {
setTimeout(() => {
reject();
}, 500);
}),
]);

p.then((data) => {
// 1
console.log(data);
});