我试图从API异步加载一堆数据,当加载所有数据时,我想触发一个所有数据都被加载的事件.我遇到的问题是我使用的API将响应对象的数量限制为五个.我可能需要检索30-40个响应对象.
所以我想要做的是创建一个when-then语句循环通过数据项并请求每五个项目,然后当所有项目都加载时我想发起一个加载的事件.我遇到的问题是when-then语句在ajax请求成功之前完成.
我试过的代码.
function loadsLotsOfStats(stats, dataType, eventName, dataName, callback) {
var groupedStats = [];
while (stats.length > 0) {
groupedStats.push(stats.splice(0, 5).join('/'));
}
j$.when(
groupedStats.forEach(function (d) {
loadJSONToData(model.apiUrl.replace("{IDS}", d), "json", "", dataName, function (d) { /*console.log(d);*/ }, true)
})
).then(function () {
j$(eventSource).trigger('dataLoaded', eventName);
});
Run Code Online (Sandbox Code Playgroud)
loadJSONToData函数基本上只是Async $ .ajax的包装函数.
所以是的,事件是在实际加载数据之前触发的.也是出于某些原因,如果我尝试在当时将循环放入(通过语法错误声明它?
有没有人对如何制作一堆Ajax请求有任何建议,并等到它们全部在触发事件之前都被竞争?或者去解决我目前的问题?
在此先感谢您的帮助.