【问题标题】:Repeated Synchronous AJAX calls based on response基于响应的重复同步 AJAX 调用
【发布时间】:2016-04-12 20:15:17
【问题描述】:

我知道有很多关于如何进行同步 AJAX 调用(使用延迟承诺)的示例,但我的问题有点不同。这是我正在尝试做的事情

  1. 进行 AJAX 调用
  2. 如果响应包含某个值,则再次循环并使用不同的参数进行另一个 AJAX 调用。参数的值将取决于第一次 AJAX 调用的响应,因此在进行第二次 AJAX 调用之前必须等待。
  3. 如果响应包含 (exit = true) 则退出循环。

我知道如果服务器从不返回条件 3,我们将处于无限循环中。

如何继续循环 AJAX 调用,直到 AJAX 调用的响应包含特定值?

【问题讨论】:

  • 将您的 ajax 调用放入一个函数中,并让一个 while 循环执行该函数,直到满足 X 条件。确保在您的 jquery ajax 调用中设置 async: false 以确保同步处理。但是,请注意,如果您使用同步处理,它将锁定您的浏览器。在执行完 while 循环之前,您将无法单击、滚动等。
  • “同步”不是指异步吗?
  • ……或者“顺序”? Promise 永远不会同步。

标签: javascript jquery ajax promise


【解决方案1】:

将用于进行 AJAX 调用的代码放在命名函数中。 AJAX 的回调函数检查响应是否包含exit = true。如果没有,它会再次调用命名函数,以使用更新后的函数进行下一次 AJAX 调用。

function call_ajax(params ...) {
    $.ajax({
        url: "url",
        data: { whatever },
        dataType: 'json'
        success: function(response) {
            if (!response.exit) {
                // calculate new parameters
                call_ajax(new_params ...);
            }
        }
    })
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-25
    • 1970-01-01
    • 2022-07-06
    • 1970-01-01
    • 2018-12-20
    • 1970-01-01
    相关资源
    最近更新 更多