• Promise.all 使用方法


    1.await 可以获得多个promise 的返回结果

    2. Promise.all 返回的也是promise,所以可以直接await Promise.all();

    1. 使用Promise

    function fn(){
        return new Promise((resolve,reject)=>{
            let randomNum = parseInt(Math.random()*6+1);
            console.log(randomNum);
            if(randomNum>3){
                resolve('买'); 
            }
            else{
                reject('不买');
            }
        })
    }
    
    Promise.all([fn(),fn()]).then((x)=>{console.log(x,'success')},(y)=>{console.log(y,'error');});
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • Promise.all 里面参数为一个数组,数组的每一项是一个返回promise 的函数调用
    • then 的第一个参数是所有promise都成功的调用,返回结果是一个数组,数组的每一项为函数promise 的返回结果。
    • then 的第二个参数:返回结果有一个失败则执行失败的回调,拿到的是第一个失败的值

    2. 使用await

    await 是可以获得多个promise 返回结果的,Promise.all()返回的也是promise结果。所以想要使用await 拿到多个promise的返回值,可以直接await Promise.all();

    function fn(){
        return new Promise((resolve,reject)=>{
            let randomNum = parseInt(Math.random()*6+1);
            console.log(randomNum);
            if(randomNum>3){
                resolve('买'); 
            }
            else{
                reject('不买');
            }
        })
    }
    async function test(){
        try{
        let res = await Promise.all([fn(),fn()]);
        console.log(res,'success');
        }
        catch(error){
            console.log(error,'error');
        }
    }
    
    test();
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • Promise.all([fn(),fn()]) 都返回resolve(); 才能够拿到成功的返回值
    • Promise.all([fn(),fn()]) 有一个返回reject(), 则进入catch(error), 拿到失败的返回值

    先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦

  • 相关阅读:
    中海庭罗凯:Prometheus监控Argo Workflow云原生工作流的方法
    『GitHub Actions』部署静态博客指南
    华为云Stack的学习(四)
    陪诊小程序:温暖您的就医之路,让关怀触手可及
    助力新冠抗原检测,基于目标检测模型完成结果检测识别
    .net MVC下鉴权认证(二)
    代码无法输出操作值,如何解决?(语言-c语言)
    函数式接口Supplier接口
    Coggle 30 Days of ML【打卡】广告-信息流跨域ctr预估
    2023年亚太杯数学建模亚太赛C题思路解析+代码+论文
  • 原文地址:https://blog.csdn.net/m0_67402026/article/details/126113877