search

Home  >  Q&A  >  body text

javascript - 求你们手中关于JS中Deferred的资料

另外还会有Promise这个词伴随出现,想搞懂。

天蓬老师天蓬老师2902 days ago523

reply all(1)I'll reply

  • 巴扎黑

    巴扎黑2017-04-10 12:50:22

    不多,大都是介绍性的文字。

    异步模式在web编程中变得越来越重要,对于web主流语言Javscript来说,这种模式实现起来不是很利索,为此,许多Javascript库(比如 jQuery和Dojo)添加了一种称为promise的抽象(有时也称之为deferred)。通过这些库,开发人员能够在实际编程中使用 promise模式。—— infoQ 《JavaScript异步编程的Promise模式》


    以下内容摘自阮一峰的博客:Javascript异步编程的4种方法

    Promises对象是CommonJS工作组提出的一种规范,目的是为异步编程提供统一接口。 简单说,它的思想是,每一个异步任务返回一个Promise对象,该对象有一个then方法,允许指定回调函数。比如,f1的回调函数f2,可以写成:

      f1().then(f2);
    

    f1要进行如下改写(这里使用的是jQuery的实现):

      function f1(){
        var dfd = $.Deferred();
        setTimeout(function () {
          // f1的任务代码
          dfd.resolve();
        }, 500);
        return dfd.promise;
      }
    

    这样写的优点在于,回调函数变成了链式写法,程序的流程可以看得很清楚,而且有一整套的配套方法,可以实现许多强大的功能。


    以及:

    • CommonJS的Promise草案A、B

    reply
    0
  • Cancelreply