作家
登录

JavaScript异步与Promise实现

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

  •             func(resolve.bind(this), reject.bind(this)); 
  •         } 
  •  
  •         return MyPromise; 
  •     });  
  • 静态办法

    在实例化创建Promise时,我们会将构造函数的两个静态办法:resolve和reject传入初始函数,接下来须要实现这两个函数:

    构造器

    1. var resolve = (val) => { 
    2.         if (tasks) { 
    3.             value = ref(val); 
    4.             state = 'resolved'; // 将状况标记为已完成 
    5.             // 依次履行义务回调 
    6.             tasks.forEach((task) => { 
    7.                 value = nextTick((val) => {task[0](self.value);}); 
    8.             }); 
    9.             tasks = undefined; // 决定后状况弗成变 
    10.  
    11.             return this; 
    12.         } 
    13.     }; 
    14.     var reject = (reason) => { 
    15.         if (tasks) { 
    16.             value = ref(reason); 
    17.             state = 'rejected'; // 将状况标记为已完成 
    18.  
    19.             // 依次履行义务回调 
    20.             tasks.forEach((task) => { 
    21.                 nextTick((reason) => {task[1](value);}); 
    22.             }); 
    23.             tasks = undefined; // 决定后状况弗成变 
    24.  
    25.             return this; 
    26.         } 
    27.     };  

    还有别的两个静态办法,道理照样一样,就不细说了。

    实例办法

    最后输出:second success,初始化promise作为主体调用第一个then办法,返回完成状况的新promise其最终值为second success,然后该新promise作为主体调用第二个then办法,该办法返回第三个promise,并且该promise最终值为undefined,若不清跋扈为什么,请回到关于Promise.prototype.then和Promise.prototype.catch的介绍。

    今朝构造函数,和静态办法完成和拒绝Promise都已经实现,接下来须要推敲的是Promise的实例办法和链式调用:

    1. MyPromise.prototype.then = (onFulfilled, onRejected) => { 
    2.        onFulfilled = onFulfilled || function(value) { 
    3.            // 默认的完成回调 

        推荐阅读

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

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


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

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

    关键词: 探索发现

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

    网友点评
    自媒体专栏

    评论

    热度

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