Jquery 如何仅在一批getJSON指令完成时触发某些内容?

Jquery 如何仅在一批getJSON指令完成时触发某些内容?,jquery,asynchronous,getjson,Jquery,Asynchronous,Getjson,以下是我的一些代码: for (var i = 0; i < recordList.length; i++) { var recordID = recordList[i]; populateDataRow(i, recordID, columns) }; console.log("done"); for(变量i=0;i

以下是我的一些代码:

for (var i = 0; i < recordList.length; i++) {
  var recordID = recordList[i];
  populateDataRow(i, recordID, columns) 
};
console.log("done");
for(变量i=0;i
这里的
populateDataRow
是一个使用
$.getJSON

问题是(至少在Google Chrome中,
console.log
语句在
populateDataRow
周期完成之前很久就被触发了

是的,
console.log
首先发生,因为
getJSON
异步的。您的代码会启动它,但在后续代码运行之后,它会稍后完成

要处理这个问题,您需要在
getJSON
上使用“completion”回调。上面的代码将记住它启动了多少次调用,并在继续之前等待那么多次完成

您还可以让
populateDataRow
函数返回
getJSON
的返回值,保存这些对象,然后在它们全部完成时使用以获取通知

这里有一个例子:|

…然后上述代码示例的结尾将是:

$.whenAll(deferreds).then(function() {
  display("All finished")
});

是的,
console.log
首先发生,因为
getJSON
异步的。您的代码会启动它,但在后续代码运行之后,它会稍后完成

要处理这个问题,您需要在
getJSON
上使用“completion”回调。上面的代码将记住它启动了多少次调用,并在继续之前等待那么多次完成

您还可以让
populateDataRow
函数返回
getJSON
的返回值,保存这些对象,然后在它们全部完成时使用以获取通知

这里有一个例子:|

…然后上述代码示例的结尾将是:

$.whenAll(deferreds).then(function() {
  display("All finished")
});

$.getJSON
是jQuery的
$.ajax()
-函数的简写函数。 XHR(或AJAX)-调用是异步的,其他代码将进一步执行,您需要提供一个回调函数,该函数在AJAX调用完成时执行

来自API()

这里,
function(data){}
是回调函数,作为
getJSON
的参数提供。
如果要处理返回的数据,需要在此函数中或在执行此函数后执行。

$。getJSON
是jQuery的
$.ajax()函数的简写函数。
XHR(或AJAX)-调用是异步的,其他代码将进一步执行,您需要提供一个回调函数,该函数在AJAX调用完成时执行

来自API()

这里,
function(data){}
是回调函数,作为
getJSON
的参数提供。
如果要对返回的数据执行某些操作,则需要在此函数中或在执行此函数后执行。

在ajax请求的回调中调用“Done”方法,并仅在检索到所有记录时让“Done”方法执行任何操作(假设您知道需要多少记录)。调用在ajax请求的回调中使用“Done”方法,并且让“Done”方法仅在检索到所有记录时执行任何操作(假设您知道需要多少记录).非常全面,非常好的答案!我将在今天的剩余时间里仔细研究这个问题,谢谢!非常全面,非常好的答案!我将在今天的剩余时间里仔细研究这个问题,谢谢!虽然我没有在示例中显示它,但是回调已经被使用了。我的问题是getJSON指令被多次调用,而我我只想知道最后一条指令何时运行。虽然我在示例中没有显示,但回调已经被使用。我的问题是getJSON指令被多次调用,我只想知道最后一条指令何时运行。
$.whenAll(deferreds).then(function() {
  display("All finished")
});
$.getJSON('ajax/test.json', function(data) {

});