亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 450 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號