作家
登录

30分钟,让你彻底明白Promise原理

作者: 来源: 2017-06-08 10:02:44 阅读 我要评论

异常处理

改进后的代码是如许的:

  1. function Promise(fn) { 
  2.  
  3.     var state = 'pending'
  4.  
  5.         value = null
  6.  
  7.         callbacks = []; 
  8.  
  9.   
  10.  
  11.     this.then = function (onFulfilled) { 
  12.  
  13.         if (state === 'pending') { 
  14.  
  15.             callbacks.push(onFulfilled); 
  16.  
  17.             return this; 
  18.  
  19.         } 
  20.  
  21.         onFulfilled(value); 
  22.  
  23.         return this; 
  24.  
  25.     }; 
  26.  
  27.   
  28.  
  29.     function resolve(newValue) { 
  30.  
  31.         value = newValue; 
  32.  
  33.         state = 'fulfilled'
  34.  
  35.         setTimeout(function () { 
  36.  
  37.             callbacks.forEach(function (callback) { 
  38.  
  39.                 callback(value); 
  40.  
  41.             }); 
  42.  
  43.         }, 0); 
  44.  
  45.     } 
  46.  
  47.   
  48.  
  49.     fn(resolve); 
  50.  
  51.  

上述代码的思路是如许的:resolve履行时,会将状况设置为fulfilled,在此之后调用then添加的新回调,都邑急速履行。

这琅绫腔有任何处所将state设为rejected,为了让大年夜家聚焦在核心代码上,这个问题后面会有一末节专门参加。

链式Promise

那么这里问题又来了,如不雅用户再then函数琅绫擎注册的仍然是一个Promise,该若何解决?比如下面的例4:

  1. // 例4 
  2.  
  3. getUserId() 
  4.  
  5.     .then(getUserJobById) 
  6.  
  7.     .then(function

      推荐阅读

      2017年上半年重大黑客事件盘点

    16. 美国法律论坛71万账户泄漏,涉国度安然局、FBI等本年4月,达拉斯紧急警备孀体系被黑客入侵。导致该城市的156个紧急戒备器被激活,警笛声持续一个小时,激发市平易近惊恐。 在以前的201>>>详细阅读


    本文标题:30分钟,让你彻底明白Promise原理

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

关键词: 探索发现

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

网友点评
自媒体专栏

评论

热度

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