gpt4 book ai didi

javascript - 为什么索引会这样增加? javascript

转载 作者:行者123 更新时间:2023-12-03 04:06:48 25 4
gpt4 key购买 nike

第一个控制台日志:0,如预期。第二个控制台日志:1。为什么索引在循环结束之前增加?

for (var i = 0; i < this.offlineTimeSlots.length; i++) {

console.log(i);

this.http.post('http://localhost:63203/api', JSON.stringify(this.offlineTimeSlots[i]), { headers: headers })
.map(res => res.json())
.subscribe(data => {

console.log(i);

resolve(data);
}, (err) => {
reject(err);
});
}

最佳答案

当您在 for 循环内进行类似操作时,基本上您正在生成 http 请求(异步)的 this.offlineTimeSlots.length 。根据循环的长度,通常 for 循环几乎每次都会在 http 请求之前完成其循环。

看一下这个例子:

for(var i = 0; i < 10; i++){
console.log(i);
setTimeout(()=>{
console.log(i);
},2000);
}

这将打印从 0 到 10 的数字(10 除外),然后打印 10,十次。原因是您在循环时创建 10 个(循环长度)异步请求。由于 for 循环将比 2 秒更快地完成遍历,因此在 setTimeout 开始时,i 将是 9 + 1(后增量)。

来源 fiddle :https://jsfiddle.net/echonax/c9p4e19o/

关于javascript - 为什么索引会这样增加? javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44513816/

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