zoukankan      html  css  js  c++  java
  • promise简单小结

    promise: ES6的方法

    同步操作的异步代码

    1、promise是一个构造函数  所以用的时候必须new

    promise里面有一个参数,这个参数是一个回调函数,回调函数里面有2个参数

    resolve,reject 当成功的时候执行的东西 ,一个是当失败的时候去执行的东西

    resolve:当成功的时候会通知下一个异步的程序去执行

    如果没有通知下一个异步代码是不会去执行的

    reject:当失败的时候会通知下一个异步程序去执行,

    如果没有通知下一个异步程序就不会去执行

    then()下一个异步程序这个里面支持2个参数 2个参数都是回调函数

    第一个回调函数是成功的回调函数,第二个回调函数是失败的回调函数

    支持链式操作

    catch():执行失败的回调函数

    该写法只适用异步代码同步2次操作,因为 .then只能一次,后面的then无效

    var p1=new Promise(function(resolve,reject){

         setTimeout(function(){

              console.log(1);

    执行console.log(1);console.log(2);

               resolve();

    //执行console.log(1);console.log("我是失败的回调");   

    //          reject();

          },3000)

       })

      p1.then(function(){

          setTimeout(function(){

               console.log(2);

          },1000)

      },function(){

           setTimeout(function(){

                  console.log("我是失败的回调");

             },1000)

      })

    }

    // p1.then(function(){

             setTimeout(function(){

                    console.log(2)

               },1000)

          }).catch(function(){

               setTimeout(function(){

                       console.log("我是失败的回调")

                 },1000)

    })

             

    如何实现多个异步同时执行

    var p1=new Promise(function(resolve,reject){

        setTimeout(function(){

                console.log("1");

                 resolve();

          },3000)

      })

    }

    function p2(){

             return new Promise(function(resolve,reject){

                    setTimeout(function(){

                         console.log("2");

                         resolve();

                     },2000)

              })

    }

    function p3(){

             return new Promise(function(resolve,reject){

                    setTimeout(function(){

                         console.log("3");

                         resolve();

                     },1000)

              })

    }

    function p2(){

             return new Promise(function(resolve,reject){

                    setTimeout(function(){

                         console.log("4");

                    //     resolve();(可以不写)

                     },1000)

              })

    }

    p1.then(function(){

           return p2();

    })

    .then(function(){

            return p3()

    })

    .then(function(){

               p4()

    })

    传递参数

    var p1=new Promise(function(resolve,reject){

         setTimeout(function(){

              console.log(1);

    var obj={name:"张三"};

    执行console.log(1);console.log(2);

               resolve(obj);

    //执行console.log(1);console.log("我是失败的回调");   

    //          reject(obj);

          },3000)

       })

      p1.then(function(data){

    console.log(data);

          setTimeout(function(){

               console.log(2);

          },1000)

      },function(data){

         console.log(data);

           setTimeout(function(){

                  console.log("我是失败的回调");

             },1000)

      })

    }

  • 相关阅读:
    [洛谷P1886]滑动窗口 (单调队列)(线段树)
    树状数组详细解析
    离散化
    kettle使用总结(一)
    springBoot开发的web项目打war包部署到已有的tomcat容器中
    集群时钟同步
    linux服务器安装nginx
    Tomcat学习之体系架构
    码云新建仓库上传项目
    linux系统安装mysql yum方式
  • 原文地址:https://www.cnblogs.com/xin1021/p/9340181.html
Copyright © 2011-2022 走看看