关于js循环内请求后台,要求循环一次请求一次

for(var i=0; i<2; i++) {
    console.log(i)
    	$.ajax({
           ...
		success: function (res) {
             console.log("A")
        }	

       });
}

发现结果为0,1,A
想要
0,A
1,A


原因是因为for循环不会等待异步任务执行结果。原理:Js是单线程的,这就意味着所有任务需要放入任务队列,一件事干完才能下一件事。异步任务会放在执行栈的尾部,当所有同步任务执行完,才会执行异步任务。
解决办法1:var 修改为let
for(leti=0; i<2; i++) {
    console.log(i)
    	$.ajax({
           ...
		success: function (res) {
             console.log("A")
        }	

       });
}
解决办法2:使用闭包
for(leti=0; i<2; i++) {
    console.log(i)
    (function(i){
    	$.ajax({
           ...
		success: function (res) {
             console.log("A")
        }	

       });
    }}(i)
}
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值