一、Promise.resolve()方法
创建一个立即完成的Promise
Promise.resolve("执行成功").then(res => console.log(res)); // "执行成功"
二、Promise.reject()方法
创建一个立即拒绝的Promise
Promise.reject("执行错误").then(res => console.log(res), req=>console.log(req));
// "执行错误"
三、Promise.all([...]) 方法
同时返回多个Promise的执行结果
function sum(a, b) {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(a + b);
}, 3000)
})
}
Promise.all([sum(1, 2), sum(11, 22), sum(33, 44)]).then(res => console.log(res));
// 9秒后输出[3, 33, 77]
其中有一个报错就返回错误
function sum(a, b) {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(a + b);
}, 3000)
})
}
Promise.all([sum(1, 2), sum(11, 22), Promise.reject("出错了"), sum(33, 44)])
.then(res => console.log(res), reason => console.log(reason));
// "出错了"
四、Promise.allSettled([...]) 方法
同时返回多个Promise执行结果(无论成功或失败)
function sum(a, b) {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(a + b);
}, 3000)
})
}
Promise.allSettled([sum(1, 2), sum(11, 22), Promise.reject("出错了"), sum(33, 44)])
.then(res => console.log(res), reason => console.log(reason));
// 以{status:xxx, value:xxx}的形式输出所有Promise的结果
五、Promise.race([...]) 方法
返回执行最快的Promise(不考虑对错)
function sum(a, b) {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(a + b);
}, 3000)
})
}
Promise.race([sum(1, 2), //3秒后执行
Promise.reject("执行失败"), //立即执行,返回该语句结果
sum(11, 22),
Promise.resolve("执行成功"),
sum(33, 44)
]).then(result => console.log(result))
.catch(error=>console.log("错误"))
// "错误"
Promise.race([sum(1, 2), //3秒后执行
Promise.resolve("执行成功"), //立即执行,返回该语句结果
sum(11, 22),
Promise.reject("执行失败"),
sum(33, 44)
]).then(result => console.log(result))
.catch(error=>console.log("错误"))
// "执行成功"
六、Promise.any([...]) 方法
返回执行最快完成的正确的Promise,全为reject才执行catch
function sum(a, b) {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(a + b);
}, 3000)
})
}
Promise.any([
Promise.reject("执行失败"), // 执行错误,跳过
sum(1, 2), // 返回最快的正确的语句
sum(22, 33),
sum(33, 44)
]).then(result => {
console.log(result);
}).catch(error => {
console.log("错误");
})
// 3
Promise.any([
Promise.reject(111),
Promise.reject(222),
Promise.reject(333), // 全为reject,执行catch
]).then(result => {
console.log(result);
}).catch(error => {
console.log("错误", error);
})
// "错误"