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)

      })

    }

  • 相关阅读:
    C# 扩展方法使用
    C# 程序集安装与卸载
    C#截取当前活动窗体的图片
    DateTime格式
    c# asp.net 多数组索引的解决方法
    关于DataSet中Relations的应用
    datalist 分页
    ASP.NET(C#) Repeater分页的实现
    asp.net 六大对象之Request、Response
    什么是DOM
  • 原文地址:https://www.cnblogs.com/xin1021/p/9340181.html
Copyright © 2011-2022 走看看