【问题标题】:Unknown number of $.get requests; how to chain effectively?未知数量的 $.get 请求;如何有效上链?
【发布时间】:2019-04-03 19:43:12
【问题描述】:

在数据库中,我有一个键数组,用于从其他表中获取数据。数组中的项目数各不相同。

所以,我可以即时设置多个变量:

var keys = ["3958d9d0kdjcu4","49djs40dksnhjd","fjfjfjtnncxkshe"]
for(var i = 0; i < keys.length; i++) {
    window.keys[i] = i;
}

但是,如何链接不确定数量的 $.get 请求?:

var A = $.get("db.url?id=key0");
var B = $.get("db.url?id=key1");
var C = $.get("db.url?id=key2");
// etc.

$.when( A, B, C).done(function(A, B, C) {
//...
});

【问题讨论】:

    标签: jquery promise get


    【解决方案1】:

    要对不确定数量的请求执行此操作,请将从$.get()(或$.ajax(),或$.post())返回的 jqXHR 对象放入一个数组中,然后将该数组应用于$.when(),如下所示:

    var requests = [];
    for (var i = 0; i < requestsToBeMade; i++) {
      requests.push($.get(`db.url?id=key${i}`));
    }
    
    $.when.apply($, requests).done(function() {
      // do some work here...
    });
    

    但是,虽然这可行,但并不理想。您不应该像这样快速连续发出多个 AJAX 请求,因为它会给服务器带来必要的负载,并且不会扩展。

    更好的解决方案是合并您发送的所有数据并发出单个请求。

    【讨论】:

    • 谢谢。它只会在 1 到 4 个请求之间,但我很欣赏这种方法和建议。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-05
    • 1970-01-01
    • 2020-09-27
    • 2018-05-06
    相关资源
    最近更新 更多