我有此代码。
$.getJSON("/some-path.json",function(resultArray){
for (var j = resultArray.length - 1; j >= 0; j--){
$.getJSON(resultArray[j],function(resultObject){
// Bunch of stuff happens here
});
}
}).done(function(){
// This should execute only after ALL $.getJSON codes above finish
});
但是.done()
中的代码在所有.getJSON()
东西完成之前运行。在.done()
结束后如何执行.getJSON()
中的代码?
答案 0 :(得分:1)
我将使用async
/ await
语法,并使用Promise.all
等待所有内部提取完成:
(async () => {
const resultArray = await $.getJSON("/some-path.json");
await Promise.all(resultArray.map(
url => $.getJSON(url, (innerResult) => {
// Bunch of stuff happens here
})
));
// all inner results have completed
})();