美文网首页JavaScript
[JavaScript] ES6 promise与jQuery

[JavaScript] ES6 promise与jQuery

作者: 何幻 | 来源:发表于2016-03-06 10:42 被阅读139次

(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方法,不能进行状态更改,
只能注册回调。

相关文章

网友评论

    本文标题:[JavaScript] ES6 promise与jQuery

    本文链接:https://www.haomeiwen.com/subject/cjsnkttx.html