【发布时间】:2014-12-25 09:52:23
【问题描述】:
我正在替换一些使用 jQuery Deferred 对象的旧代码,并且我正在使用 Bluebird/ES6 Promises 重写。
如果我有多个异步调用,如何在所有 promise 都解决后触发函数。
使用 jQuery Deferreds 会是这样的:
var requests = [...]; //some arbitrary data that is iterated to generate multiple ajax requests
var promises = [];
resuests.forEach(function(endpoint) {
promises.push($.ajax({url: endpoint}));
});
$.when.apply($, promises).then(function() {
alert('all promises complete!');
});
如何使用 ES6 Promise 语法重写它?
【问题讨论】:
-
使用 jQuery 的 promise 语法可以是
$.when.apply($, requests.map($.get)).then(...- 更干净
标签: javascript promise bluebird es6-promise