gpt4 book ai didi

javascript - 构建 Ajax 调用数组时,JQuery Ajax 成功回调不起作用

转载 作者:行者123 更新时间:2023-11-30 16:10:01 25 4
gpt4 key购买 nike

我需要通过解析基于另一个数组构建的 promise 数组来构建对象数组。

假设我有一组 letters = ['a', 'b', 'c']。然后,我将其映射为使用每个字母作为参数进行 Ajax 调用,如下所示:

var result = letters.map(function (letter) {
return $.getJSON('myuri', { param: letter });
};

结果,我得到了一个带有 ajax promise 的数组。然后我这样解决:

Promise.all(result).then(function (response) {
console.log(response);
});

日志正在打印每个 ajax 调用的原始响应。在那之前一切正常。但我不想要原始响应,我想要自定义对象,所以我尝试使用 Ajax 的成功回调来创建它们,如下所示:

var letters = ['a', 'b', 'c'];

var result = letters.map(function (letter) {
return $.getJSON('myuri', { param: letter })
// Chaining with success callback
.done(function (response) {
return {
'custom_attr': response.x,
'athor_custom_attr': response.y
};
});
});

Promise.all(result).then(function (response) {
console.log(response);
});

问题是成功回调不会干扰数组的创建。事实上,我可以在回调中将返回更改为 ANYTHING,这没有任何区别,代码仍然返回原始响应的数组。

当我使用 $http 服务对 Angular 执行此操作时,它运行良好,但使用 $.getJSON 对 JQuery 执行此操作时不起作用,我不明白为什么这正在发生。

提前谢谢大家。

最佳答案

您的回调返回值被忽略,因为您已经使用了done。你真正想要的是使用 then它为回调的结果创建了一个新的 promise :

var result = letters.map(function (letter) {
return $.getJSON('myuri', { param: letter })
.then(function (response) {
return {
'custom_attr': response.x,
'athor_custom_attr': response.y
};
});
});

done 方法不可链接!几乎没有理由在 then 上使用它。

关于javascript - 构建 Ajax 调用数组时,JQuery Ajax 成功回调不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36412248/

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