Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery 3.0承诺_Javascript_Jquery_Promise_Jquery 3 - Fatal编程技术网

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