在一个 javascript 函数中,我调用了服务器并获得了 10 条记录的批处理。在获得所有记录之前,我需要这样做。
首先我做了一个 while 循环,在 ajax 调用的错误回调中我将结束 while 循环。
进行到一半时,我开始意识到这行不通,因为 ajax 调用是异步的,因此我会在循环中触发大量请求。我确定有一个标准模式可以执行此操作,但我不知道如何操作。
只要调用不返回错误,我如何在循环中执行 ajax 调用并执行它? 我正在构建的伪代码:
var stillRecordsAvailable = true;
while (stillRecordsAvailable) {
// get the next batch of records
$.ajax({
url: '/getrecords.json',
data: {data_set_id: dataset.id},
type: 'GET',
success: function(data, textStatus, xhr) {
// do something
},
error: function(xhr, textStatus, errorThrown) {
// nothing left to do
stillRecordsAvailable = false;
}
});
谢谢你给我指明了正确的方向
最佳答案
您可能只想将 ajax 调用包装在一个在 ajax 成功回调上调用的函数中:
function getRecords(data, textStatus, xhr) {
if (data) {}; // do something...
$.ajax({
url: '/getrecords.json',
data: {data_set_id: dataset.id},
type: 'GET',
success: getRecords
});
}
这仅在您的服务器/API 在没有更多记录存在时返回错误时才有效;然而,这可能不是最好的模式。一种更优雅的跟踪异步事件状态的方法是通过延迟/ promise 模式。 jQuery 有一个很好的实现:http://api.jquery.com/category/deferred-object/
关于javascript - 在 while 循环中使用带有 ajax 调用的分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15574931/