将 async/await 与 forEach 循环结合使用

2024-03-14

使用有什么问题吗async/await in a forEach环形?我正在尝试循环遍历文件数组并await关于每个文件的内容。

import fs from 'fs-promise'

async function printFiles () {
  const files = await getFilePaths() // Assume this works fine

  files.forEach(async (file) => {
    const contents = await fs.readFile(file, 'utf8')
    console.log(contents)
  })
}

printFiles()

这段代码确实有效,但是会出现什么问题吗?我有人告诉我你不应该使用async/await在这样的高阶函数中,所以我只是想问一下这是否有任何问题。


当然,代码确实有效,但我很确定它没有达到您期望的效果。它只是触发多个异步调用,但是printFiles之后函数立即返回。

按顺序阅读

如果你想按顺序读取文件,你不能使用forEach的确。只需使用现代for … of而是循环,其中await将按预期工作:

async function printFiles () {
  const files = await getFilePaths();

  for (const file of files) {
    const contents = await fs.readFile(file, 'utf8');
    console.log(contents);
  }
}

并行阅读

如果你想并行读取文件,你不能使用forEach的确。每一个async回调函数调用确实返回一个承诺,但您将它们扔掉而不是等待它们。只需使用map相反,你可以等待你将得到的一系列承诺Promise.all:

async function printFiles () {
  const files = await getFilePaths();

  await Promise.all(files.map(async (file) => {
    const contents = await fs.readFile(file, 'utf8')
    console.log(contents)
  }));
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 async/await 与 forEach 循环结合使用 的相关文章

  • javascript获取上周的第一天和最后一天[重复]

    这个问题在这里已经有答案了 我想用 javascript 获取上周的第一天 星期一 和最后一天 星期日 我已经检查过其他主题 但它不起作用 我还需要处理前一周是否是两个不同的月份 我正在使用此代码 但最后一个星期日是 06 03 2014
  • 一个文本区域中的文本应复制到另一个文本区域,并且应使用 JavaScript 单击按钮清除原始文本区域

    我已经完成了以下代码 它显示两个文本区域 其中一个文本区域中的文本通过使用 javascript 单击按钮复制到另一个文本区域
  • Jquery 动画与 CSS 浮动

    我的代码有问题 宽度似乎可以工作 但浮动没有 这里是 这是一个例子 http jsfiddle net v82ck http jsfiddle net v82ck 问题 悬停时菜单上的浮动属性不会改变 我希望每个菜单元素下方的线在悬停该菜单
  • IE 9 的子元素不透明,我无法使用 captify 阻止它

    好的 我正在使用一段名为 Captify 的 javascript 它为您的图像添加了一个带有文本的小弹出窗口 适用于所有接受 IE9 的浏览器 IE9 会淡化弹出 div 中的所有内容 我已阅读其子元素问题 但无法修复它 由于在网上任何地
  • 通过单击字段启用非活动字段

    是否可以有一组非活动字段 如果单击其中一个字段 则某些字段将变为必填字段并运行某些代码段 举例来说 您显示了三个字段
  • 在 AngularJS 中覆盖运行时的依赖关系

    我有一个服务叫 doggedHttp 它公开了与 http 现在我想创建一个 doggedResource服务是有角度的 resource服务之上 doggedHttp代替 http 换句话说我想注入 doggedHttp as the h
  • Angular 2 最终版本路由器单元测试

    如何使用 karma 和 jasmine 对 Angular 2 0 0 版中的路由器进行单元测试 这是我的旧单元测试在版本 2 0 0 beta 14 中的样子 import it inject injectAsync beforeEac
  • 嵌套对象的 AJV 模式验证

    函数返回的对象看起来像这样 answer vehicle type 1 message Car model VW color red 答案 对象始终存在 其他字段基于 vehicle type E g 如果vehicle type 1 则有
  • 向 FTP 服务器执行跨域 XMLHTTPREQUEST 的语法是什么?

    我有一个 webDav CORS 插件 可以使用它在 webDav 服务器上 POST PUT GET REMOVE ALLDOCS 文件 我现在想对 FTP 做同样的事情 但我正在努力获取xmlhttprequest 工作语法 我只是收到
  • HTML5 拖放 - 没有透明度?

    当我将一个元素拖放到页面上时 该元素会变成 幻影 基本上它获得了一些透明度值 有什么办法可以做到吗opacity 1 看来是做不到了 拖动的元素被放入具有自己的不透明度 低于 1 的容器中 这意味着虽然您可以降低拖动元素的不透明度 但您无法
  • 将服务连接到现有的流星帐户

    我正在设置一个流星应用程序 其中涉及使用用户名和密码进行注册 然后希望将该帐户与 Facebook 和 Twitter 连接起来 我只需使用帐户包即可轻松启动并运行第一部分 但是当我有一个登录用户调用 Meteor loginWithFac
  • 使用 test() 通过正则表达式进行信用卡验证

    我正在尝试完成一些作业 看来这本书可能做错了 我有一个简单的 html 页面 允许用户在我们的例子中选择信用卡 美国运通卡 然后 用户输入一个数字并根据正则表达式评估该数字 我的问题最终是当 test 计算它返回的数字时是布尔值还是字符串
  • 如何获取 svgElement 的比例?

    我正在研究 svg div style width 300 height 300 div
  • Rails - 使链接与 ajax 一起工作

    我有一个链接 应该使用 ajax 加载它旁边的部分内容 而无需重新加载页面 链接在这里 这是链接应该转到的控制器 class ProfilesController lt ApplicationController def profile f
  • 检查 href 中是否存在 jQuery 中的查询字符串

    我目前有一段 jQuery 用于附加带有一些位置信息的 URL jQuery a attr href function return this href location 123 abc 我的问题是大多数链接都有一个 其中使用上面的 就可以
  • 如何将 setTimeout 添加到使用 redux 的 fetch Promise 中?

    经过一定的秒数后 如果获取承诺尚未得到解决 我想向用户显示超时错误 我在这里看到了一些添加 setTimeout 来获取的很好的例子 https github com github fetch issues 175 https github
  • 如何修复 AJAX 在选中复选框时始终触发?

    有时这个 AJAX 会触发 有时不会 让我解释一下 habit js document ready function habit check change function habit this parent siblings habit
  • 如何逐步绘制矢量路径? (拉斐尔.js)

    如何逐步动画化矢量路径 就像它被绘制一样 换句话说 慢慢地逐像素地显示路径 我在用着Rapha l js but如果您的答案不是特定于库的 例如可能有一些通用的编程模式可以完成此类事情 我对矢量动画相当陌生 欢迎 使用直线路径很容易做到 就
  • JavaScript 右移负数

    这是片段 var i 101 console log 101 i toString 2 console log 101 gt gt 1 i gt gt 1 toString 2 var l 101 console log 101 l toS
  • Javascript:修改原型不会影响现有实例[重复]

    这个问题在这里已经有答案了 我创建了原型的 2 个实例 更改了原型中的函数 更改反映在两个实例中 很棒 但是 当我通过删除该函数来修改原型时 该函数对于现有实例仍然存在 function A this name cool A prototy

随机推荐

  • 获取 Julia Lang 中当前变量的列表

    我是朱莉娅 朗的新手 我是Matlab背景出来的 在Matlab中 当按下whos命令我将获取当前范围内的所有变量 而且 我可以将它们存储在另一个变量中 例如x whos Julia 中是否存在这样的命令 Matlab 中的示例代码 gt
  • 为什么“找不到可以导入的项目”?

    我正在尝试 将现有项目导入工作区 作为 根目录 我选择所有 java 和 class 文件所在的目录 Eclipse 写信给我 没有找到可以导入的项目 为什么 这个答案与 Laura 的答案相同 但是 在新的 Eclipse 版本中 您将无
  • 如何在 IE HTML 条件中创建“else”?

    我如何在 HTML 中执行此操作 我想做一个 其他 你不是在寻找别人 你是在寻找
  • Ajax 调用后是否可以使用 PHP 重定向页面?

    我有一个网站 我想为用户提供一个选项 如果他们单击表格的行 他们会被重定向到另一个页面 基于表格行的内容 所以我所做的基本上是使用 jQuery 收集数据并将其 POST 到 PHP 文件中 在我的 PHP 文件中 我想使用以下命令进行重定
  • 为了最大限度地提高 Mono 代码的可移植性,我应该注意哪些限制?

    我有兴趣使用 Mono 编写一些跨平台代码 以针对移动 iOS 和 Android 运行时 我仔细阅读了 Mono 和 MonoTouch 网站 但没有看到任何具体建议不要使用的方法 或者应该避免的 Mono 挂钩 然而 这似乎有点好得令人
  • 如何验证 WPF 客户端对 ASP .NET WebAPI 2 的请求

    我刚刚创建了一个ASP NET MVC 5 Web API项目并添加了实体框架模型和其他东西以使其能够使用ASP 网络身份 http identity codeplex com 现在 我需要从 WPF 客户端应用程序创建一个对该 API 标
  • 如何在FileUpload控件中限制文件类型

    是否可以允许文件上传控件仅显示图像 当我们单击 浏览 按钮时 它应该只显示图像 2015年 网页浏览器支持输入法accept属性 所以你可以这样做
  • 如何在 ASP.Net 中创建带有子控件集合的控件

    我正在尝试为 ASP NET 开发一个自定义控件 该控件将具有以下标记
  • 保存的图像方向错误

    我正在使用这段代码 https github com commonsguy cw advandroid blob master Camera Picture src com commonsware android picture Pictu
  • appcfg.py 无法在命令行中工作

    我只是有点难以理解为什么这个命令 gt appcfg py A adept box 109804 update app yaml 正如 立即尝试 Google App Engine 页面所给出的那样 该页面不起作用 我已经下载了适用于 Py
  • 用 Git 寻找分支点?

    我有一个包含 master 和 A 分支的存储库 以及两者之间的大量合并活动 当基于master创建分支A时 如何在我的存储库中找到提交 我的存储库基本上如下所示 X A B C D F master G H I J branch A 我正
  • 如何访问作为参数传递给 C# 中通用函数的对象的方法

    我有一个通用方法 它具有一些通用类型的参数 我想要做的是能够访问我的函数内这个泛型类型参数的方法 public void dispatchEvent
  • 为什么“git submodule update”会跳过子模块?

    我有一个带有单个子模块的 git 存储库sub x 该子模块不包含其自己的任何子模块 在超级项目的存储库中 输出git status显示以下 未暂存的 修改 modified sub x new commits 如果我现在跑步 git su
  • 鼠标交互的设计模式

    我需要一些关于什么是通用鼠标的 理想 设计模式的意见 相互作用 这里是简化的问题 我有一个小型 3d 程序 QT 和 openGL 并且 我使用鼠标进行交互 每一次互动通常不仅仅是一次 单个函数调用 主要由最多 3 个函数调用 启动 执行
  • EmailAddressAttribute 不需要

    我有一个 EmailAddress 来自 net 4 5 的模型属性上的 DataAnnotation 它返回一个 电子邮件字段不是有效的电子邮件地址 当 Email 属性为空时 验证期间出错 虽然这在技术上是正确的 但我预计这个空值只能用
  • Rails sort_by 方法有两个字段,一个按升序排序,一个按降序排序

    我想渲染一个按分数排序的部分 然后按名称排序 如果多个玩家具有相同的分数 现在我正在使用这个 这是可行的 但它按升序对分数进行排序 而我想按降序对它们进行排序 如何翻转分数的排序顺序 但不翻转名称的排序顺序 我仍然想按升序排序 Thanks
  • 在 JPA 2.0 JPQL 中,当返回一个 NEW 对象时,如何使用 FETCH JOIN?

    我的一位同事有以下 显然无效的 JPQL 查询 SELECT NEW com foobar jpa DonationAllocationDTOEntity a id a campaign a campAppeal a campDivisio
  • 从 Excel VBA 运行 Powershell 命令(非脚本)

    我已经搜索过 并且可以找到大量从 VBA 运行 PowerShell 脚本的示例 但我找不到任何仅运行简单命令的示例 例如 这有效 Dim retval As Variant retval Shell PowerShell C MyScri
  • 打印文件中的第一个和最后一个匹配项

    对于以下问题是否有更清洁的解决方案 grep INFO messages head 1 grep INFO messages tail 1 INFO 或消息的长度是随机的 Try grep INFO messages sed n 1p p
  • 将 async/await 与 forEach 循环结合使用

    使用有什么问题吗async await in a forEach环形 我正在尝试循环遍历文件数组并await关于每个文件的内容 import fs from fs promise async function printFiles cons