背景
有这么一段代码,循环发送10次异步请求,请求以每次的下标为参数。
for (var i=0; i<10; i++) {
ajax({
url: '/api/xxx?index' + i
})
}
结果10次请求的url都是:api/xxx?index=9
,也就是说,10次请求都把最后一次请求的参数当参数。
原因
for循环执行完毕,再执行10次异步请求,这个时候的i已经是9了,那么这10次请求的参数都是一样的了。
解决思路
把异步改成同步或者…
var改成let或者…
foreach或者…
闭包(function (i) { ajax })(i)或者…
aync await