作家
登录

JavaScript异步与Promise实现

作者: 来源: 2017-05-12 10:49:32 阅读 我要评论

静态办法

Promise.all(iterable)

all办法接收一个或多个promsie(以数组方法传递),返回一个新promise,该promise状况取决于传入的参数中的所有promsie的状况:

  1. 当所有promise都完成是,返回的promise完成,其最终值为由所有完成promsie的最终值构成的数组;
  2. 当某一promise被拒绝时,则返回的promise被拒绝,其拒绝原因为第一个被拒绝promise的拒绝原因;
  1. var p1 = new Promise((resolve, reject) => { 
  2.        setTimeout(function(){ 
  3.            console.log('p1决定'); 
  4.            resolve('p1'); 
  5.        }, 10); 
  6.    }); 
  7.    var p2 = new Promise((resolve, reject) => { 
  8.        setTimeout(function(){ 
  9.            console.log('p2决定'); 
  10.            resolve('p2'); 
  11.        }, 10); 
  12.    }); 
  13.    Promise.all( [p1, p2] ) 
  14.    .then((msgs) => { 
  15.        // p1和p2完成并传入最终值 
  16.        console.log(JSON.stringify(msgs)); 
  17.    }) 
  18.    .then((msg) => { 
  19.        console.log( msg ); 
  20.    });  

输出如下:

Promise.race(iterable)

race办法返回一个promise,只要传入的诸多promise中的某一个完成或被拒绝,则该promise同样完成或被拒绝,最终值或拒绝原因也与之雷同。

Promise.resolve(x)

resolve办法返回一个已决定的Promsie对象:

  1. 若x是一个promise或thenable对象,则返回的promise对象状况同x;
  2. 若x不是对象或函数,则返回的promise对象以该值为完成最终值;
  3. 不然,具体过程依然按前文Promsies/A+规范中提到的规矩进行。

该办法遵守Promise/A+决定规范。

Promsie.reject(reason)

返回一个应用传入的原因拒绝的Promise对象。

实例办法

Promise.prototype.then(onFulfilled,>

  • var promise = new Promise((resolve, reject) => { 
  •        setTimeout(function() { 
  •            resolve('完成'); 
  •        }, 10); 
  •    }); 
  •    promise.then((msg) => { 
  •        console.log('first messaeg: ' + msg); 
  •    }).then((msg) => { 
  •        console.log('second messaeg: ' + msg); 
  •    });  
  • 输出如下:


      推荐阅读

      开源SDN解决方案如何确保网络拓扑无缝切换?

    电信运营商(Telcos)和收集办事供给商(ISP)面对着应用动态拓扑调剂的挑衅,以确保连接的稳定性和持续性。这意味>>>详细阅读


    本文标题:JavaScript异步与Promise实现

    地址:http://www.17bianji.com/lsqh/35174.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)