当前位置: 首页 > wzjs >正文

成交型网站建设价格长沙seo就选智优营家

成交型网站建设价格,长沙seo就选智优营家,飞机免费代理ip,珠海企业网站制作费用如果js一个代码块中有耗时操作,但是return的结果可能会依赖这个耗时操作的返回,怎么解决? 一般人可能想到的方法就是async/await。 没错,正常情况下是这样的,伪代码如下: async OuterFun() { const resul…

如果js一个代码块中有耗时操作,但是return的结果可能会依赖这个耗时操作的返回,怎么解决?

一般人可能想到的方法就是async/await

没错,正常情况下是这样的,伪代码如下:

async OuterFun() {

   const result = await timeCostFunc() // timeCostFunc是耗时操作 

   ..... 

 return finalResult  // finalResult依赖于上面的耗时操作返回的result

}

 上面需要注意的是耗时操作的函数必须返回一个promise!

 但是下面这种情况使用async/await就没有效果了

async _normalizeSongs(songs) {let ret = [];for (const song of songs) {const songItem = await createSong(song); // createSong是耗时操作ret.push(songItem);}return ret;}

这里的原因就在于: 遍历数组这个步骤并不是完全同步的,即便使用了async/await,也是这样。

换句话说:由于js异步执行的原因,而遍历数组本身并不是一个完全同步阻塞的操作(就算有async/await关键字), return ret这个操作可能会在for循环之前就执行了,所以返回的是一个空数组

那么问题的关键就是:要把for循环和数组push整个代码块变成一个完全同步阻塞的操作!

解决办法:把需要完全同步的部分整体封装成一个promise, 然后再通过await 这个promise同步阻塞获取结果,这样就能保证了:最终return会等待前面所有异步代码执行完毕,那么就不会return空值了

代码如下:

async  _normalizeSongs(songs) {// 将涉及到数组的耗时操作整体封装成一个promiseconst songPromise = new Promise(async (resolve) => {let ret = [];for (const song of songs) {const songItem = await createSong(song);ret.push(songItem);}resolve(ret); // 把耗时操作的结果丢给resolve。});// 等待这个promise同步阻塞获取结果const resultSongs = await songPromise;return resultSongs;}

http://www.dtcms.com/wzjs/176754.html

相关文章:

  • 网站代码软件新网站百度seo如何做
  • 豆芽网站建设douyanet2023年7月疫情还会严重吗
  • 大淘客优惠券网站是怎么做的河源市企业网站seo价格
  • 美食网站的设计与制作常用的关键词优化策略有哪些
  • 托管网站流量购买网站
  • 大朗网站建设企业网站建设cms
  • 网站备案信息传seo推广是做什么
  • 浙江省网站建设公司网站流量统计软件
  • 某服装企业网站建设方案中国今天刚刚发生的新闻
  • 如何进行医药网站建设重庆seo优化公司
  • 湖南智能网站建设多少钱东莞网络营销网站建设
  • 做网站维护的是什么公司专业软文发布平台
  • 双城网站建设公司谷歌关键词搜索
  • wordpress首页显示分类目录下的一个类别优化营商环境心得体会个人
  • 英文b2c网站建设百度搜索风云榜官网
  • 网站建设用什么语言上海好的seo公司
  • 做网站还能挣钱宁波seo软件免费课程
  • 改网站标题快照倒退怎么解决免费域名申请网站大全
  • 深圳网站建设黄浦网络百度快照收录
  • 如何给网站增加内链河北百度seo
  • 专门做汽车动力性测试的网站网站建设介绍ppt
  • 中济建设官方网站企业域名查询
  • 在线网站优化百度软件下载
  • 网络营销网站策划网店推广是什么
  • 日文网站建站制作企业网站的公司
  • 青岛胶南做网站的搭建网站工具
  • 开一个网站的流程网络营销管理系统
  • 新手如何建站百度首页广告
  • 手机做兼职的网站求职seo推荐
  • wordpress新版无法保存seo推广网络