• Promise.all和Promise.race的区别


    Promise.all()可以将多个实例组装个成一个新实例,成功的时候返回一个成功的数组;失败的时候则返回最先被reject失败状态的值。

    适用场景:比如当一个页面需要在很多个模块的数据都返回回来时才正常显示,否则loading。

    promise.all中的子任务是并发执行的,适用于前后没有依赖关系的。

    let wake=(time)=>{
    return new Promise(function (resolve,reject){
    setTimeout(()=>{
    resolve(`${time/1000}后醒来`);
    },time);
    });
    }
    let p1=wake(10000);
    let p2=wake(1000);
    Promise.all([p1,p2]).then(res=>{
    let [res1,res2]=res;
    console.log(res1,res2);
    }).catch(err=>{
    console.log(err);
    })
    Promise.race()意为赛跑的意思,也就是数组中的任务哪个获取的块,就返回哪个,不管结果本身是成功还是失败。一般用于和定时器绑定,比如将一个请求和三秒的定时器包装成Promise实例,加入到Promise队列中,请求三秒中还没有回应时,给用户一些提示或相应的操作。

    let p1=new Promise((resolve,reject)=>{
    setTimeout(()=>{
    resolve('success');
    }, 10000);
    });

    let p2=new Promise((resolve,reject)=>{
    setTimeout(()=>{
    reject('faild');
    }, 500);
    });

    Promise.race([p1,p2]).then(res=>{
    console.log(res);
    }).catch(err=>{
    console.log(err); // 返回的是faild
    })

    ————————————————
    版权声明:本文为CSDN博主「Master.Yuan」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/yuanwen52/article/details/106559149

  • 相关阅读:
    四则运算题目的程序
    Github注册账户过程
    目前流行的源程序版本管理软件和项目管理软件都有哪些?各有什么优缺点?
    学习进度总结
    学习进度总结
    7月29 日实习日志及总结
    7月28日实习日志
    7月27实习日志
    7月26日实习日志
    7月25日实习日志
  • 原文地址:https://www.cnblogs.com/sexintercourse/p/16538703.html
Copyright © 2020-2023  润新知