Promise静态方法

一、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);
        })
        // "错误"
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值