• ES6 Promise链式调用解决异步回调


    ​​​​​​​

    目录

    then()

    resolve()

    reject()

    catch()

    race()

    all()


    有哪里不对请各位大佬指出,我改!

    then()

    就是将各个方法组合起来,链式调用,你可以把多个方法想作多个羊肉粒,而then()则是烤串的签子

    resolve()

    这个是Promise中的回调内部方法,是成功后的回调给参数的方法

    你可以想一下:你在吃烤肉串,肉串进入了你的嘴里,咀嚼完毕后吞下,吞下之后你就可以

    reslove('嘴里已经腾出了地方,快给我喝一口百威!')

    1. function eat羊肉串(){
    2. var p = new Promise(function(resolve,reject){
    3. setTimeout(function(){
    4. console.log("咀嚼完毕后吞下");
    5. resolve("嘴里已经腾出了地方,快给我喝一口百威!");
    6. },1000);
    7. });
    8. return p;
    9. }

    reject()

    这个是Promise中的回调内部方法,是失败后回调给参数的方法

    你可以想一下:你吃了100串羊肉,此时你的胃已经吃不下别的东西了,

    此时服务员端上来了两个羊腰子,你得朋友小明说 快吃快吃这个热乎的。

    但是此时你得胃已经容不下腰子了

    reject('我实在吃不下了!我要吃撑了!')

    1. let 胃还有空间 = false;
    2. function eat羊腰子(){
    3. var p = new Promise(function(resolve,reject){
    4. setTimeout(function(){
    5. console.log("朋友让你吃腰子!");
    6. if(胃还有空间){
    7. resolve("胃还有空间,继续炫!!!");
    8. }else{
    9. reject("我实在吃不下了!我要吃撑了!");
    10. }
    11. },1000);
    12. });
    13. return p;
    14. }

    catch()

    使用then()时你可以使用此方法捕获到reject()的内容

    1. eat羊肉串().then(()=>eat羊腰子()).catch(function(data){
    2. console.log(data)// 会打印 我实在吃不下了!我要吃撑了!
    3. })

    race()

    这个方法就是谁先执行完就立即执行回调

    你可以想一下:你在吃烧烤得时候,老板上了三块西瓜,

    此时小明 啪 拍了一张100块钱放在桌子上,说“我们一人100,谁先吃完西瓜桌上的钱就是谁的!怎么样!”

    小华和你 “啪! 啪!都甩了一张百元大钞”

    1. function 小明吃西瓜(){
    2. var p = new Promise(function(resolve,reject){
    3. setTimeout(function(){
    4. resolve("小明吃完了!");
    5. },1000);
    6. });
    7. return p;
    8. }
    9. function 小华吃西瓜(){
    10. var p = new Promise(function(resolve,reject){
    11. setTimeout(function(){
    12. resolve("小华吃完了!");
    13. },1000);
    14. });
    15. return p;
    16. }
    17. function 你吃西瓜(){
    18. var p = new Promise(function(resolve,reject){
    19. setTimeout(function(){
    20. resolve("你吃完了!");
    21. },1000);
    22. });
    23. return p;
    24. }
    25. Promise.race([小明吃西瓜(), 小华吃西瓜(),你吃西瓜()]).then(function(results){
    26. console.log(results);
    27. console.log('拿走了钱');
    28. });

    all()

    这个方法,就是在所有的方法完成后再执行回调

    你可以想一下:你和几个朋友吃烤串总得问一下他们吃饱了没,都吃饱了你才可以打包吧!

    1. function 问小明吃饱没(){
    2. var p = new Promise(function(resolve,reject){
    3. setTimeout(function(){
    4. resolve("吃饱了!");
    5. },1000);
    6. });
    7. return p;
    8. }
    9. function 问小华吃饱没(){
    10. var p = new Promise(function(resolve,reject){
    11. setTimeout(function(){
    12. resolve("吃饱了!");
    13. },1000);
    14. });
    15. return p;
    16. }
    17. Promise.all([问小明吃饱没(),问小华吃饱没()]).then(function(results){
    18. console.log("从兜里掏出红色塑料袋,开始打包腰子!");
    19. });
  • 相关阅读:
    深度学习——(8)回归问题
    AI强势入场,成就史上最快足球
    [Deepin] 常用集合
    JDBC(一)基础知识
    netty包版本问题导致dubbo服务调用失败
    java毕业设计青少年心理健康教育平台演示录像2020源码+lw文档+mybatis+系统+mysql数据库+调试
    【C++】多态
    @Version乐观锁配置mybatis-plus使用(version)
    mysql数据常见类型
    pmp新考纲全真模拟题,提分敏捷+情景!
  • 原文地址:https://blog.csdn.net/Mr_ZhangAdd/article/details/126661697