Javascript jQuery 3.0承诺
你对以下几点有什么看法Javascript jQuery 3.0承诺,javascript,jquery,promise,jquery-3,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
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');
在jQuery-1.11.1中,我们得到:
这显然是错误的,在jQuery 3.0中,我们得到:
这正是我们所期望的,因为承诺回调是异步执行的
但是,通过将.then替换为.done,在这两种情况下,我都得到了:
promiseOne done
main thread finished
这是怎么回事这仍然是jQuery 3.0的一个bug还是.done回调是同步执行的?您不应该使用
.done
,除非是为了适当终止承诺链.done
未在承诺/A+中指定,因此没有相关问题
promise回调是异步执行的,以便在以前的设计中使用 阅读此文,延迟对象中有一些更改。未提及
。完成-可能他们已将所有时间都用于延迟。然后承诺/A+合规,不向猴子透露他们所穿的所有其他积垢Deferred@JaromandaXfwiw,试图查询此,即.done()之间的差异
和.then()
,今天在jquery irc;一般来说,响应是规范只需要.then()
方法,而.done()
不应被视为等同于.then()
。我想让你看看我的报告,里面没有人给我一个好的答案。我认为你是承诺方面的专家,你可以回答……我在@ILIAS发布了一个答案——让我知道这是否是你的想法。那么,你怎么看。完成回访了吗?它们是否同步执行?顺便说一下,谢谢你对我的赏金做出的及时反应。
main thread finished
promiseOne done
promiseOne done
main thread finished