我正在研究 JavaScript 中的 Promises。我很有趣我可以将 ECMAScript Promises 与其他实现结合起来,例如 jQuery $.Deferred
。Promises.all
当与 jQuery 一起正常工作时,我感到很惊讶$.Deferred
。我试图在 jQuery 源代码和 CommonJS Promises/A 规范中找到答案,但我仍然误解了为什么这段代码按我的预期工作(console.log
在 10 秒后,而不是 5 秒后):
var promise = new Promise(function (resolve, reject) {
setTimeout(function () {
resolve();//resolve first promise after 5 secs
console.log('Promise resolved');
}, 5000);
});
var deferred = $.Deferred();
setTimeout(function () {
deferred.resolve();//resolve after 10 seconds
console.log('Deferred resolved');
}, 10000);
Promise.all([promise,deferred]).then(function () {
console.log('All is done');//log after 10 seconds
});
你有什么想法?
Promise.all
必须依靠某些领域或方法$.Deferred
来理解它是否解决。那个方法/字段是什么?