[JavaScript] ES6 promise与jQuery promise

(1)ES6方式

http://liubin.github.io/promises-book/#promise-is-always-async
即使在调用promise.then注册回调函数的时候promise对象已经是确定的状态,
<u></u>Promise也会以异步的方式调用该回调函数,这是在Promise设计上的规定方针。

例如:

var pro=new Promise(function(resolve){
    resolve(1);
});

//已经resolve了,再设置then回调。
pro.then(function(v){
    alert(v);    //1
});
alert(2);

//还是会已异步方式,发生回调。
//先alert(2)再alert(v);

//而且,以后什么时候注册then,都会异步调用。

(2)jQuery方式

但是jQuery的promise并不是如此。

例如:

var defer=$.Deferred();
defer.resolve(1);

//deferred对象已经resolve了
defer.done(function(v){
    alert(v);    //不会执行
});
alert(2);

//只执行alert(2);
//如果需要执行done,就要把注册done回调放到defer.resolve()之前。

注:
jQuery的promise是一种限制化的deferred对象。

var defer=$.Deferred();
var promise=defer.promise();

promise没有resolverejectnotify方法,不能进行状态更改,
只能注册回调。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 抽象来说,deferreds 可以理解为表示需要长时间才能完成的耗时操作的一种方式,相比于阻塞式函数它们是异步的,...
    北方蜘蛛阅读 1,576评论 1 5
  • Promise的含义:   Promise是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和...
    呼呼哥阅读 2,202评论 0 16
  • 本文适用的读者 本文写给有一定Promise使用经验的人,如果你还没有使用过Promise,这篇文章可能不适合你,...
    HZ充电大喵阅读 7,343评论 6 19
  • Promise 的含义 一句话概括一下promise的作用:可以将异步操作以同步操作的流程表达出来,避免了层层嵌套...
    雪萌萌萌阅读 5,588评论 0 7
  • 来来来,咱们先来玩个游戏: 丈母娘要给你发媳妇儿啦,老大老二老三,你选择哪一个? 老大:年龄32,有车有房,自有公...
    苏柠姑娘阅读 522评论 0 0