完成所有$ .getJSON调用(包括内部调用和循环调用)后,如何执行代码?

时间:2019-07-08 00:12:41

标签: javascript jquery getjson

我有此代码。

$.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()中的代码?

1 个答案:

答案 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
})();