Promise

作者: Yin先生 | 来源:发表于2019-01-14 14:02 被阅读0次

Promise首先基于了一个JS引擎的执行机制原理:https://segmentfault.com/a/1190000012806637

1.Promise具有不受外界影响和不可逆的特点,只要执行了resolve就不执行第二个了,只能执行一个。

 new Promise(function(resolve,reject){
        resolve();
        reject();
    }).then(function(){
        alert("成功的方法!")
    }).catch(function(){
        alert("失败之后调用的方法!");
    })

2.Promise链式调用,当执行完then时还想让它在执行一个方法,就要用到----------链式调用,不满足的话可以多次调用

 new Promise(function (resolve,reject){
        resolve("成功");
        reject("失败");
    }).then(function(v){
        alert(v);
        return "123";
    }).then(function(v){  // 这个参数就是上一个then返回的值。
        alert(v);
        return "再来一个,哈哈!";
    }).then(function(a){
        alert(a);
    })

3.3.Promise的静态方法(很少用到)

// 成功的时候可以用这个方法
      Promise.resolve("静态方法没啥用,只是有这个功能而已!").then(function(m){
          alert(m);
      })
    // 失败的时候也可以用这个方法
     Promise.reject("静态方法也是没有什么用,面试的时候吹牛逼吧,哈哈!").catch(function(m){
         alert(m);
     })

4.race--- 方法:一堆promise实例,谁先过来我就先算谁的,先成功--->成功, 先失败--->失败;如果先执行失败的方法那么成功的方法就不执行了。

 Promise.race([new Promise(function(resolve,reject){
        setTimeout(resolve,301,'one');
     }),new Promise(function(resolve,reject){
        setTimeout(resolve,300,'two');
     }),new Promise(function(resolve,reject){
        setTimeout(reject,100,'three');
     })]).catch(function(l){
         console.log(l)
     })

5.把所有的东西放到数组里并且展示出来.Promise.all

 Promise.all([Promise.resolve('abc'),Promise.reject('def'),2,3]).then(
      function(m){
          console.log(m);
      }
  ).catch(   // 因为有一个失败的,所以说只执行失败的方法,并且把失败的东西返回来。
      function (m){
          console.log(m);
      }
  )

相关文章

网友评论

      本文标题:Promise

      本文链接:https://www.haomeiwen.com/subject/pgiddqtx.html