gpt4 book ai didi

javascript - 具有意外输出的 forEach 循环中的 Ajax

转载 作者:行者123 更新时间:2023-11-29 23:17:58 24 4
gpt4 key购买 nike

为什么下面输出中的 index 值不是所有 console.logs 的 3?我希望:

  1. 在任何请求返回响应之前,forEach 循环调用 ajax 4 次。指数 = 3。
  2. 返回一个响应,运行成功回调,在执行阶段,检查作用域链中是否有已经为 3 的索引。

我假设当索引不是 3 时,不可能足够快地返回响应以运行成功回调。

campaigns = [1, 2, 3, 4];

campaigns.forEach((campaign, index) => {
$.ajax({
type: 'GET',
url: apiURL,
success: function(data) {
console.log('index: ', index);
}
});
});

输出(异步每次不同):

index: 2
index: 1
index: 3
index: 0

最佳答案

index 是传递给回调的每次迭代的参数 - 该参数不会自行更改。它不像 for 循环,其中每次迭代都可以更改共享的 i 变量。

如果你想模拟一个 for (var i = 0... 循环,其中 i 在结束时被重新分配给 3 ,您将需要另一个外部变量,并在每次迭代时显式重新分配它,例如:

const campaigns = [1, 2, 3, 4];
let campaignIndex = 0;
campaigns.forEach((campaign, index) => {
campaignIndex = index;
$.ajax({
type: 'GET',
url: apiURL,
success: function(data) {
console.log('campaignIndex: ', campaignIndex);
}
});
});

关于javascript - 具有意外输出的 forEach 循环中的 Ajax,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51977712/

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