jQuery 3.0承诺

时间:2016-02-18 13:15:53

标签: javascript jquery promise jquery-3

您如何看待以下内容?

var starter;
starter = $.Deferred();

starter.then(function () {
    console.log('promiseOne done');
});

starter.resolve();

var now=new Date().getTime();
var stop=now+5000;
while (stop>new Date().getTime()){}
console.log('main thread finished');

在j Query-1.11.1 中,我们得到:

promiseOne done
main thread finished

明显错误,在 jQuery 3.0 中,我们得到:

main thread finished
promiseOne done

希望是我们所期望的,因为承诺回调是异步执行的

但是,将 .then 替换为 .done ,在这两种情况下我都会:

promiseOne done
main thread finished

这里发生了什么? 这仍然是jQuery 3.0或.done回调同步执行的错误吗?

1 个答案:

答案 0 :(得分:2)

除非为了适当地终止承诺链,否则您不应该使用.done。在Promises / A +中未指定.done,因此没有任何问题。

promise回调是异步执行的,以便在之前的设计中为fix inherent problems