NodeJs相关内容

JS for 循环里的 await

PHPer 2024-10-06 15 0 0

结果依旧,这说明在普通的 for 循环里,程序会等待上一步迭代结束执行 await 后,再继续下一步迭代。这个和我们的预期一致,for 循环里的 async/await 是顺序执行的;同理也适用于 while、for-in、for-of 等等形式中。

之前有篇我的 blog 提到过 js 的异步发展史:从callback到promise再到async/await。async/await之后的 JS 开始允许我们以一种看似顺序执行的方式书写代码,这让入门 JS 变得更简单,但在一些复杂的场景里比如 for-loop 环境里,async/await还是会有不少坑的。

Warm up

开始前,先写个“菜篮子工程”,getVegetableNum是本文中最基础的一个异步函数——异步获取蔬菜数量:

  1. const Basket = {
  2. onion: 1,
  3. ginger: 2,
  4. garlic: 3,
  5. }
  6. const getVegetableNum = async (veg) => Basket[veg];

知识点:async是一个语法糖,表示把结果包在 Promise 里返回;该异步函数等价于

  1. function getVegetableNum (veg) {
  2. return Promise.resolve( Basket[veg] );
  3. }

OK,我们再试着异步获取三种蔬菜的数量:

  1. const start1 = async () => {
  2. console.log('Start');
  3. const onion = await getVegetableNum('onion');
  4. console.log('onion', onion);
  5. const ginger = await getVegetableNum('ginger');
  6. console.log('ginger', ginger);
  7. const garlic = await getVegetableNum('garlic');
  8. console.log('garlic', garlic);
  9. console.log('End');
  10. }

最后打印结果如下:

  1. Start
  2. onion 1
  3. ginger 2
  4. garlic 3
  5. End

await in a for loop

OK,前言到此为止。现实中开发中,上述代码枚举每一种蔬菜的方式太过冗余,一般我们更倾向于写个循环来调用getVegetableNum方法:

  1. const start = async () => {
  2. console.log('Start');
  3. const arr = ['onion', 'ginger', 'garlic'];
  4. for(let i = 0; i < arr.length; ++i>){
  5. const veg = arr[i];
  6. const num = await getVegetableNum(veg);
  7. console.log(veg, num);
  8. }
  9. console.log('End');
  10. }

结果依旧,这说明在普通的 for 循环里,程序会等待上一步迭代结束执行 await 后,再继续下一步迭代。这个和我们的预期一致,for 循环里的 async/await 是顺序执行的;同理也适用于 while、for-in、for-of 等等形式中。...

立即注册
分享的网址网站均收集自搜索引擎以及互联网,非查问网运营,查问网并没有提供其服务,请勿利用其做侵权以及违规行为。

更新于:2024-10-06 22:42:32
    您需要登录后才可以评论。 立即注册
    相关内容

    IT信息技术(information technology)的工具和内容整理

    IP 地址查询 爬虫识别(在线工具)

    关于form表单同时用两种方式传输数据的困惑

    PHP向js传数组

    js关于对齐方式display的三个属性

    nodejs puppeteer 自动化测试和采集的内容整理

    [Bug]: TypeError: page.$x is not a function

    推荐内容

    分享几个好用的bt搜索bt资源下载网址网站

    影视电影剧集动漫综艺bt资源在线播放网址网站推荐分享

    全网最新bt磁力搜索引擎bt资源bt网站网址分享

    人气美女女优百度指数排行榜(波多野结衣,苍井空,三上悠亚,深田咏美,桥本有菜,北条...

    最强人造人深田咏美,业界的社交女王

    人生起起落落的三上悠亚,成名前的清纯风,怎么搭配出来的?

    业内第一大长腿,桥本有菜的腿究竟有多长

    波多野结衣,岛国业界著作最多的超级劳模

    日本AV界NO.1,苍井空是多少宅男的疯狂?

    美女女优视频混剪 This Girl-Laza Morgan

    怎样使用V2Ray代理和SSTap玩如魔兽世界/绝地求生/LOL台服/战地3/黑色沙漠/彩...

    sstap游戏代理教程 从此玩如魔兽世界/绝地求生/LOL台服/战地3/黑色沙漠/彩虹六...

    影视电影剧集动漫综艺bt资源在线播放网址网站推荐分享