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)

  })

}

原文地址:https://www.cnblogs.com/xin1021/p/9340181.html