Promise 简单总结

59 阅读1分钟
  • 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)})