【发布时间】:2018-06-17 01:33:31
【问题描述】:
我通过添加循环和延迟对象对example 进行了一些修改,以了解所有承诺都已实现。
我想要做的是将所有承诺推入一个数组,并在所有承诺都完成后将它们打印出来。
这是我的代码:
get_data();
function get_data() {
var myPromise = [];
var calls = [];
var resultset = '';
for (var j = 0, k = 5; j < k; j++) {
var d = $.Deferred();
var p = get_result();
if (p.isPending()) {
console.log('pending');
}
p.then(function(resultset) {
if (p.isFulfilled()) {
myPromise.push(resultset);
calls.push(d);
}
});
}
$.when.apply($, calls).then(function() {
console.log(myPromise); // always prints an empty array.
});
}
function get_result() {
return MakeQuerablePromise(new Promise(function(result, reject) {
setTimeout(function() {
result("Yeah !");
}, 10000);
}));
}
Fiddle获取完整代码
【问题讨论】:
-
Promise.all似乎是你真正想要的,而不是使用 jquery almost 承诺 kludge 称为 Deferred -
@JaromandaX 你能发布一个例子吗?谢谢
-
不是真的因为我无法理解您的代码根本 - 我刚刚拿起你所说的等待所有承诺解决 -这听起来非常适合
Promise.all- 每个人都可以使用其文档developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
标签: javascript jquery es6-promise jquery-deferred