作家
登录

JavaScript异步与Promise实现

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

)); 
  •    }); 
  •    promise.then((msg) => { 
  •        console.log('完成:' + msg); 
  •    }, (reason) => { 
  •        console.log('拒绝:' + reason); 
  •    });  
  • reject函数并不会处理参数,而只是直接将其当做拒绝原因拒绝promise。

    Promise实现

    Promise是什么,怎么样应用就介绍到此,别的一个问题是面试过程中经常也会被说起的:若何实现一个Promise,当然,限于篇幅,我们这里只讲思路,不会长篇大年夜论。

    以上可以简单实现Promise部分异步治理功能:

    构造函数

    1. var MyPromise = (() => { 
    2.         var value = undefined; // 当前Promise 
    3.         var tasks = []; // 完成回调队列 
    4.         var rejectTasks = []; // 拒绝回调队列 
    5.         var state = 'pending'; // Promise初始为等待态 
    6.  
    7.         // 帮助函数,使异步回调下一轮事宜轮回履行 
    8.         var nextTick = (callback) => { 
    9.             setTimeout(callback, 0); 
    10.         }; 
    11.  
    12.         // 帮助函数,传递Promsie的状况值 
    13.         var ref = (value) => { 
    14.             if (value && typeof value.then === 'function') { 
    15.                 // 若状况值为thenable对象或Promise,直接返回 
    16.                 return value; 
    17.             } 
    18.             // 不然,将最终值传递给下一?then办法注册的回调函数 
    19.             return { 
    20.                 thenfunction(callback) { 
    21.                     return ref(callback(value)); 
    22.                 } 
    23.             } 
    24.         }; 
    25.         var resolve = (val) => {}; 
    26.         var reject = (reason) => {}; 
    27.  
    28.         function MyPromise(func) { 

        推荐阅读

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

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


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

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

    关键词: 探索发现

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

    网友点评
    自媒体专栏

    评论

    热度

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