JS用循环搞Ajax的时候循环变量i一直都是4是什么情况?

以上是部分代码,我在下面想输出i的值,值居然会变成4,这是什么情况?... 以上是部分代码,我在下面想输出i的值,值居然会变成4,这是什么情况? 展开
 我来答
SunshineZW555
推荐于2018-04-05
知道答主
回答量:1
采纳率:100%
帮助的人:927
展开全部
因为ajax 默认是异步多线程的,而for循环是单线程的,所以它只能拿到最后的i值
如果将asyc改为false,同步,就不会有这样的问题
但是不推荐这样做,目前没想到更好的办法
或者你可以试试回掉,promise
yugi111
推荐于2016-08-11 · TA获得超过8.1万个赞
知道大有可为答主
回答量:5.1万
采纳率:70%
帮助的人:1.3亿
展开全部
闭包的情况

for(var i = 0; i < 4; i++){
(function(i){
$.get("url", function(){
if(state=="success"){
if(data=="") alert(i);

}

});

})(i);

}
追问

现在不是4了,但是它冒出来的怎么都是随机数。。。我刷新了10次有9次都不带重样的

我记录了一下,不晓得是怎么回事。。。

还有,我记录的时候是按组记的,像第一行就是第一次刷新时跳出的四个消息框。好像每次跳出来都是随机的

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式