gpt4 book ai didi

javascript - JQuery - promise 数组和格式响应

转载 作者:行者123 更新时间:2023-11-29 22:06:26 26 4
gpt4 key购买 nike

我正在使用一组延迟对象。该数组的大小为 vble,因此它可以包含一个或多个延迟对象。处理ajax调用时出现问题。代码如下:

$.when.apply($, array_ajax_calls).then(...)

当使用 .when 和 .apply 时,如果数组只有一个 promise 对象,那么响应是一个包含三个对象的数组:

 // Return the object, the status and the jqXHR object
[Array[1] , "success", Object ]

如果数组包含多个对象,则它返回一组与前一个响应相同的响应。

[
[Array[1] , "success", Object ],
[Array[1] , "success", Object ],
...
]

如您所见,响应是不同的。第一个返回一个包含三个值的数组。第二个返回包含三个值的数组数组。这使我必须检查是否为一个或多个对象完成了 ajax 调用并更改逻辑,因为响应具有不同的格式。

我不明白为什么我会得到不同的回应。如果我将一组 promise (即使只有一个 promise )传递给 .apply(...) 函数,我会期望得到:

[ [Array[1] , "success",  Object ] ]

代替

[Array[1] , "success",  Object ]

有没有办法得到相同的响应格式?

最佳答案

您在问题中提到的行为是设计使然,是由于 $.when() 仅在收到多个参数时才创建自​​己的 master promise。

但是,非延迟参数被视为返回这些参数的已解决 promise 。因此,您可以系统地将 null 作为额外参数传递给 $.when(),例如:

$.when.apply($, [null].concat(array_ajax_calls)).then(...)

如果这样做,then() 回调中的响应将始终采用以下形式:

[
null,
[Array[1] , "success", Object],
...
]

从那里开始,您只需忽略第一个元素并处理所有其他元素。

关于javascript - JQuery - promise 数组和格式响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20740521/

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