javascript - 在 while 循环中使用带有 ajax 调用的分页

标签 javascript jquery pagination

在一个 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/

相关文章:

javascript - 使用 Mocha 进行 Javascript 测试时 assert.equal 和 assert.deepEqual 之间的区别?

Javascript:Onkeydown,将文本向某个方向移动但需要按两次

javascript - 使用带有ajax内容的fancybox时如何防止外部滚动?

javascript - 我无法遍历我的 JSON 并获取我的数据

php5分页当前页

Javascript 对象在赋值后丢失属性

javascript - 如何将 ArrayBuffer 转换为 AudioBuffer?

javascript - 将切换的 div 直接对齐到父级下方

javascript - 演示模式下的 AngularJS 表调用虚拟数据

cakephp - 如何使用附加参数 cakephp 传递分页参数?