请注意:这个问题是关于为什么 jQuery 的 promise 实现不遵循 Promises/A+ 规范的要求 2.2.4。
我注意到一旦jQuery 延迟对象被解析,对done的新调用将同步调用任何 doneCallbacks。
var d = $.Deferred();
d.resolve("Foo Bar!");
var fooBar = "Waiting";
d.done(function(data){fooBar = data; });
console.log(fooBar);//Will output "Foo Bar!" because the doneCallback is called synchronously
我曾期望将回调放在事件队列中(在这种情况下,控制台的输出将是“等待”),以匹配在延迟对象解决之前调用 done 的行为。我的期望不合理吗?
不过,我似乎找不到任何关于这种行为的文档,所以我不确定这是否是我可以依赖的行为。