es6 Promise

传统实现异步操作就是采用回调函数,回调函数方式本身没有什么问题,但是在多重回调层层嵌套的情况下,那么代码的可阅读性就会出现问题。
Promise
对象是一个新的异步操作解决方案,比原有的回调函数等方式更为合理
Promise
对象具有三种状态:Pending(等待)、Resolved(已完成)和Rejected(未完成)。
Promise
对象状态的改变只有两种可能:Pending转变为Resolved或者Pending转变为Rejected。

step1().then(step2).then(step3).then(step4).catch(function(err){

  // do something when err
});
例:
let param;  //
传递参数载体
  function p1() {

    return new Promise(function(resolve, reject) {
      setTimeout(function () {
        console.log("aaaaa");
        //resolve(123);
        param='第1';
        reject(123);

       },3000);
    });
  }
  function p2() {
    return new Promise(function(resolve, reject) {
       setTimeout(function () {
          console.log("bbbbb");
          param='第2';
          resolve(456); //
继续向下
          //reject(456);  //
截停
        },2000);

    });
  }
  function p3() {
    return new Promise(function(resolve, reject) {
       setTimeout(function () {
          console.log("cccccc");
          console.log('传来:'+param);
          param='
第3';
          resolve(789);

        },1000);
    });
  }

   function p4() {
      return new Promise(function(resolve, reject) {
         setTimeout(function () {
            console.log("dddddd");
            console.log('传来:'+param);
            resolve('
结束');
          },1000);

      });
    }

  p1().then(p2).then(p3)
  .then(function(data) {
      console.log('data: ' + data);
  })
  .catch(function(error) {
    console.log('end,error: ' + error);
    if(error==123){           //如果第1步出错
       p3().then(p4);

    }else if(err==456){
      p4();
    }

  });              

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值