为了账号安全,请及时绑定邮箱和手机立即绑定

js闭包取值

js闭包取值

慕工程0101907 2019-05-13 13:32:53
嵌套调用接口函数来获取并更改信息,但是第二个接口函数取不到循环的i值,尝试传参,但是then方法又不太了解fetchUserList(this.listQuery).then(response=>{this.list=response.data.listfor(vari=0;i{this.office=response.data.data.nameconsole.log(i)})}console.log(this.list)this.total=response.data.totalthis.listLoading=false})
查看完整描述

2 回答

?
手掌心

TA贡献1942条经验 获得超3个赞

解决
把循环里面的var换成let
for(leti=0;)
原因
你这种写法.每次都是取的最后一个i的值,即i总是等于this.list.length-1
原理
何为异步
就是把所有同步方法执行完毕之后,再开始执行异步方法.即,如果你的循环是5次,那么系统会先执行循环这个代码,执行完一次循环,就在最后面排一个异步方法,一共排上5个,等循环代码执行完了,再依次执行这5个异步方法
等你循环代码执行完的时候,i已经变成5了,所以每个异步方法取的值都是5
何为闭包
闭包就是在异步方法里面,能够取到异步方法外的变量值...你这里的需求是,每个异步方法,取第一次循环的i值.所以必须定义局部变量传参
                            
查看完整回答
反对 回复 2019-05-13
  • 2 回答
  • 0 关注
  • 481 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号