-
Promise.all():参数所有返回结果为成功才返回
-
Promise.allSettled():参数返回结果不论是否成功,都返回每个参数执行状态
-
Promise.any():参数中只要有一个成功就返回该成功的执行结果
-
Promise.race():返回最先成功的执行结果
简单举个例子,一个图片请求的场景,将图片请求和请求超时判断一起处理,此时使用 race()
// 请求图片
function requestImg() {
return new Promise(function(resolve, reject) {
let img = new Image();
img.onload = function() {
resolve(img)
}
img.src = "https://images.unsplash.com/photo-1659622067904-324d338f0f06?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=870&q=80"
})
}
// 请求超时,这里设置 2000 毫秒
function requestTimeout() {
return new Promise(function(resolve, reject) {
setTimeout(function() {
reject("请求超时!")
}, 2000)
})
}
// 异步请求处理
Promise.allSettled([requestImg(), requestTimeout()])
.then(function(result) {
console.log(result)})
.catch(function(reson) {
console.log(reson)})