gpt4 book ai didi

javascript - 并行执行多个 AJAX 请求,并在所有请求完成后运行一个函数

转载 作者:数据小太阳 更新时间:2023-10-29 05:27:27 26 4
gpt4 key购买 nike

我正在尝试使用 HTML 中的 JQuery 完成以下操作序列。

  • 构建了一个 url 列表
  • 使用 $.getJSON(url) 并行请求这些 url 中的每一个
  • 等待所有请求完成或失败(可能发生 404)
  • 获取所有已完成的 JSON 请求的数据并执行某些操作。

我构建了下面发布的 Java 脚本代码。它工作完美,除非其中一个请求由于 404 错误而失败: 然后,$.when 不会运行,因为如果请求失败它会立即中止。您能否以某种方式覆盖 ajax 请求,使它们不会失败,而是返回一个空源?

我已经阅读了 thisthis发布,但它没有提供在所有查询完成后可以运行代码的解决方案。

function fetchData() {
queries = [];
//urls is initialized somewhere else containing all urls
for(var url in urls) {
queries.push($.getJSON(url));
}

$.when.apply(this, queries).done(function() {
console.log("Finished all queries, got "+arguments.length+" results");
//Now arguments is a array containing the results of all requests
}

//function returns instantly, no problem!
}

最佳答案

我可能会这样做:

$(document).ready(function(){
var _q = ['/echo/json/', '/echo/json/', 'mybadurl'];
var _d = [];
for(u in _q)
{
$.ajax({
url: _q[u],
success: function(data){
pushData(data);
},
error: function(x){
pushData(x);
}
});
}

function pushData(d)
{
_d.push(d);
if(_d.length == _q.length)
{
alert('were done');
}
}
});

在这里,您将来自成功 错误的数据推送到数组 _d 并进行测试以确保在继续之前收到所有回复(alert('were done');).

当然,您可以通过将包含操作状态的对象与有效负载一起推送到 _d 中来使它更智能,但这是一个快速的 hack 组合来演示我最有可能的做法做你要求的事。

Fiddle here

关于javascript - 并行执行多个 AJAX 请求,并在所有请求完成后运行一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5773459/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com