methods:{getData(){if(!this.token){console.log('tokenisnull')return}lettokenBody={"Content-Type":"application/json",}letitemsArr=[]this.bymbolArr.forEach(asyncitem=>{console.log(item)lettokenBody={'Content-Type':'application/json',}letdata=awaitpost(Config.getSharesUrl,tokenBody);if(data.RetrieveItem_Response_3){letdataArr=data.RetrieveItem_Response_3.ItemResponse[0].Item[0].Fields.Field;if(dataArr.length>0){varobj={}letarr=dataArr.forEach(item=>{if(item.Double){obj[item.Name]=item.Double}})}}letitemObj={}itemObj[item]=objconsole.log('itemibj='itemObj)itemsArr.push(itemObj)})console.log('itemsArr='+itemsArr)this.items=itemsArr}await后边的post是自己用permise封装的ajax,配合async和await使用,结果先显示itemsArr=空,再显示itemibj=的每项,是什么原因造成的?
2 回答
隔江千里
TA贡献1906条经验 获得超10个赞
不要在asyncawait的时候有forEach或者其他封装的方法可以用原始的for循环或forof或者类似于这样的封装leteach=async(arr,fn)=>{for(vari=0;iawaitfn(arr[i],i); }}asyncgetData(){letitemsArr=[];awaiteach([1,2,3],asyncitem=>{vardata=awaitpost(item);itemsArr.push(data);});console.log(itemsArr)}
添加回答
举报
0/150
提交
取消