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

forEach()内使用异步函数,此函数需要item的其中一个属性(mid)作为jsonp参数来异步获取数据,应该怎么做?

forEach()内使用异步函数,此函数需要item的其中一个属性(mid)作为jsonp参数来异步获取数据,应该怎么做?

慕码人2483693 2019-05-12 09:31:11
RT,list包含100首歌曲,现在对它进行遍历,拿到每首歌曲的mid,作为getSongvkey(jsonp)参数来异步获取vkey值,再通过creatSong方法将vkey作为属性添加至歌曲上,这个vkey值需要用来获取歌曲的播放链接。现在的问题是因为数据是异步获取的,我按以下代码在forEach遍历的时候,只能拿到最后一个item的vkey,如何每遍历一个item就获取它的mid然后异步获取其vkey返回,再处理下一个item?_normalizeSongs(list){letret=[]list.forEach((item)=>{let{musicData}=itemif(musicData.songid&&musicData.songmid&&musicData.albummid){getSongvkey(musicData.songmid).then(res=>{if(res.code===ERR_OK){letvkey=res.data.items[0].vkeyret.push(creatSong(musicData,vkey))}})}}returnret}
查看完整描述

2 回答

?
长风秋雁

TA贡献1757条经验 获得超7个赞

async/await了解一下,这个写法看起来挺像同步的。遇到异步的地方会堵塞,一直到异步方法执行完成才会继续往下执行,达到类似同步执行的效果。用法很简单,百度几个例子看一下就明白了
                            
查看完整回答
反对 回复 2019-05-12
  • 2 回答
  • 0 关注
  • 688 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信