gpt4 book ai didi

javascript - 处理带有意外数量参数的 jQuery.when.apply

转载 作者:行者123 更新时间:2023-12-01 01:41:44 33 4
gpt4 key购买 nike

我需要触发多个请求,保留顺序并忽略错误。作为初级 JavaScript 程序员,在浏览文档和代码后,出现了以下模式:

var requests = [];
for (yadda yadda) {
request.push($.ajax())
}
$.when.apply(null, requests).always(function () {
for (var i = 0; i < arguments.length; i++) {
var result = arguments[i];
// do things
}
})

据我了解,以这种方式调用时会创建一个主延迟,仅当请求中的所有延迟完成(成功或失败)时才会触发。

不幸的是,上面的代码在请求只包含一个元素的情况下不起作用。当发生这种情况时,when 会以不同的方式表现,并且我的always()回调不会收到长度为1的数组,而是收到解压的单个响应对象。

我看到了这个问题的解决方案,但没有一个是惯用的(或者是替代方法)。

最佳答案

这是一种解决方法,但为什么不使用结果长度来确定您的预期响应呢?那么您将始终拥有一个可以使用的预期数组

if( requests.length == 1 ) {
arguments = [arguments];
}

<强> Working example.

另一个解决方案是更改结构并以正确的 jQuery 模式使用它。然后您将始终收到 array 形式的响应,并且不会再遇到任何问题。

$.when(requests).always(function(response) {
response.forEach(r => console.log(r));
})

<强> Working example.

请注意,您的示例中存在拼写错误。它应该是请求,而不是请求

requests.push($.ajax());

关于javascript - 处理带有意外数量参数的 jQuery.when.apply,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39169126/

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