在 JavaScript 中,在循环内使用 wait 会阻止循环吗?

2023-11-24

采用以下循环:

for(var i=0; i<100; ++i){
    let result = await some_slow_async_function();
    do_something_with_result();
}
  1. Does await阻止循环?或者是i继续递增,同时awaiting?

  2. 顺序是do_something_with_result()保证顺序i?还是取决于速度有多快awaited 函数适用于每个i?


  1. Does await阻止循环?或者是i继续递增,同时awaiting?

“阻止”这个词不太恰当,但是,i等待时不会继续递增。相反,执行会跳回到async函数被调用,提供一个 Promise 作为返回值,继续函数调用后的其余代码,直到代码堆栈被清空。然后,当等待结束时,函数的状态被恢复,并且在该函数内继续执行。每当该函数返回(完成)时,相应的承诺(之前返回的)就会得到解决。

  1. 顺序是do_something_with_result()保证顺序i?还是取决于速度有多快awaited 函数适用于每个i?

订单有保证。下面的代码await还保证仅在调用堆栈清空后执行,即至少在下一个微任务可以执行时或之后执行。

看看这段代码的输出如何。特别注意“调用测试后”的地方:

async function test() {
    for (let i = 0; i < 2; i++) {
        console.log('Before await for ', i);
        let result = await Promise.resolve(i);
        console.log('After await. Value is ', result);
    }
}

test().then(_ => console.log('After test() resolved'));

console.log('After calling test');
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 JavaScript 中,在循环内使用 wait 会阻止循环吗? 的相关文章

  • createHTMLNotification() 替换

    我创建了一个 Chrome 扩展程序 其中使用createHTMLNotification 在所有内容之上显示一个窗口 然而 从 Chrome 28 开始 谷歌决定放弃createHTMLNotification 完全 为什么 谷歌 为什么
  • 在 HTML5 Javascript 中将 BlobBuilder 转换为字符串

    function blobToString blob var reader new FileReader var d reader onloadend function d callback reader result console lo
  • 浏览器视口大小(以设备像素为单位)

    Goal 我希望 Flash 能够获得有关浏览器视口宽度和高度 以设备像素为单位 的准确信息初始化 调整大小或浏览器缩放事件时 规格 我需要将 flash 嵌入到在 chrome safari firefox 等中运行的 html 页面中
  • 在特定页面上执行 javascript 的正确“Rails”方式

    我试图在特定页面上运行 javascript 而我唯一的解决方案似乎是反模式 我有controller js内部生成的assets javascripts 我在用着gem jquery turbolinks 我的代码类似于以下内容 docu
  • Vue 3 Composition API 提供/注入在单文件组件中不起作用

    我正在使用 Composition API 在 VueJS 3 中创建一个库 我实现了提供 注入 如中所述docs https v3 vuejs org guide composition api provide inject html i
  • 在版本 4.4.6 中禁用 ckeditor 上下文菜单

    我在 Rails4 项目中使用 ckeditor 我尝试了 ckeditor gem 和 ckeditor rails gem 来提供 ckeditor 库 这里有多个帖子 人们希望删除 ckeditor 上下文菜单 以便可以显示本机浏览器
  • 通过 JavaScript 获取表单名称

    我有一个简单的问题 但我在网上找不到好的解决方案 我有这个 HTML 代码
  • 导航栏下拉菜单(折叠)在 Bootstrap 5 中不起作用

    我在尝试使用以下命令创建响应式菜单或下拉按钮时遇到问题Bootstrap 5一切似乎都正常 导航图标和下拉图标出现 但它不起作用 当我单击nav图标或dropdown按钮 无dropdown menu apears 我想特别提到的是 我还包
  • javascript 选择自定义光标 (svg)

    我正在动态地将光标更改为悬停时的本地 svg element on mouseover function this css cursor url svgs pointer svg 9 30 auto 工作正常 但我想选择该 svg 来操纵其
  • C# 异步等待澄清?

    我读了here http blog stephencleary com 2012 02 async and await html that 等待检查等待的看看它是否有already完全的 如果 可等待已经完成 那么该方法将继续 运行 同步
  • 如何使用 Javascript 设置查询字符串

    有没有办法使用 javascript 设置查询字符串的值 我的页面有一个过滤器列表 单击该列表时 它将更改右侧的页内结果窗格 我正在尝试更新 url 的查询字符串值 因此如果用户离开页面 然后单击 后退 按钮 他们将返回到最后一个过滤器选择
  • 如何在另一个自定义 Hook 中使用返回值的自定义 Hook?

    我正在使用 React native 其中有一个名为的自定义 HookuseUser使用以下方法从 AWS Amplify 获取用户信息Auth getUserInfro方法 然后获取返回对象的一部分并用它设置一个状态变量 我还有另一个名为
  • 使用 JavaScript 移动页面上的按钮

    我的按钮可以移动 但奇怪的是 我无法弄清楚偏移是否有问题 我希望我的按钮随着鼠标光标移动 但现在它的移动方式不是我想要的 有时它会消失 另外 创建的新按钮是重叠的 我不知道如何解决这个问题并拥有更好的外观 var coorA var coo
  • 如何计算特定字符在字符串中出现的次数

    我正在尝试创建一个函数来查看数组中的任何字符是否在字符串中 如果是 有多少个 我尝试计算每一种模式 但是太多了 我尝试使用 Python 中的 in 运算符的替代方案 但效果不佳 function calc fit element var
  • 表单发布请求并存储收到的数据

    我有一个非常简单的表单 在提交时发出发布请求
  • 聆听 Angular 2 中的元素可见性

    我正在为我的网络应用程序使用 Bootstrap 和 Angular 2 v4 我想监听指令中的元素以了解可见性变化 我的元素有一个可以隐藏其子元素的父元素hidden sm up我需要在每次隐藏或显示时触发一个函数 div hidden
  • 用于选择特定 div 中具有特定类的锚元素的 jQuery 选择器是什么

    我有一些这样的代码 我想选择每个 a 带有类的标签status在 div 中foo div a class status a div 你可以这样做 foo find status a
  • 使用javascript动态更新css内容

    需要将 css 更新为动态值 我不确定最好的方法是什么 div style zoom 1 div 缩放级别将根据窗口大小调整触发 应用程序将相应缩放 我将此应用程序加载到 cordova 中并让它在 iPAD 中运行 然后我意识到需要使用
  • 如何从 json 文件创建模型? (ExtJS)

    这是我想使用 json 文件创建的模型 Ext define Users extend Ext data Model fields name user id type int name user name type string 为了根据服
  • 如何通过索引访问 JSON 对象中的字段

    我知道这不是最好的方法 但我别无选择 我必须通过索引访问 JSONObject 中的项目 访问对象的标准方法是只写this objectName or this objectName 我还找到了一种获取 json 对象内所有字段的方法 fo

随机推荐

  • 所有 Python 类都应该扩展对象吗? [复制]

    这个问题在这里已经有答案了 我发现以下两项都有效 class Foo def a self print hello class Foo object def a self print hello 所有 Python 类都应该扩展对象吗 不扩
  • 传递给宏的变量在错误的命名空间中解析?

    The Noir macro defpage给我带来了一点麻烦 我正在尝试构建与此类似的调用 defpage post some url data some stuff 但是 不要使用关键字 post我想使用一个变量 如下所示 def my
  • 存储过程版本控制

    如何管理存储过程的修订 我们在 SQL Server 2005 上有一个 BI 解决方案 包含数百个存储过程 将这些内容导入 Subversion 的好方法是什么 您推荐使用哪些工具将存储过程编写为文件 毫无疑问 您可以购买许多现成的产品
  • HTTP 重定向绑定 SAML 请求

    假设执行 SP init SSO 使用 HTTP Redirect Binding 而不是 HTTP POST Binding 并且需要签名的 AuthnRequest 这意味着在 URL 中包含 SAMLRequest Q1 我需要在 U
  • 目录在 github 上显示为灰色文件夹,但不跟踪其内容。为什么?

    我有一个目录 ui kit 它在 github 上显示为灰色文件夹 它不可点击 这是 gitignore的全部内容 Fleetwit docs uploads env prj pui Logs logs log Node node modu
  • R 中“str”报告的第二列是什么?该列中的“atomic”是什么意思?

    Using str survey OM 我的数据框上表明我的所有数值数据都是atomic 如果我使用class survey OM perc OM 它返回numeric 我一直以为第二栏str显示了数据的类别 但看起来并不那么简单 所以我的
  • 如何设置windbg自动下载所有符号?

    一般来说 我对编程和调试很陌生 我花了很多时间离线 没有互联网 并且正在阅读 Windows 调试内部 一书 但时不时地 我发现自己需要一个 pdb 文件 我做了一些挖掘 发现了这个网址 http msdn microsoft com en
  • 跨域 AJAX 预检失败来源检查

    这似乎不起作用 ajax url http localhost 3000 foo json data foo bar headers HTTP X CUSTOMHEADER foobar xhrFields withCredentials
  • 对本地文件系统的 AJAX 请求在 Chrome 中不起作用? [复制]

    这个问题在这里已经有答案了 我正在努力使用 jQuery 从 XML 动态创建 UI 我的 jQuery 在 Firefox 中工作 但在 Chrome 中不起作用 它给了我这个控制台错误 仅协议方案支持跨源请求 http data chr
  • 从网页程序获取所有图像|爪哇

    目前我需要一个给定 URL 的程序 返回网页上所有图像的列表 ie 标志 png 图库1 jpg 测试 gif 在我尝试编写代码之前是否有可用的开源软件 语言应该是java 谢谢 菲利普 只需使用一个简单的 HTML 解析器 like jT
  • 禁用“Owl carousel”中特定元素(项目)的拖动 - jquery

    我使用 OWL Carousel jQuery 插件 http www owlgraphic com owlcarousel 在我的小项目中 我创建了可通过此插件拖动的小脚本 现在我想禁用特定元素 项目 中的拖动 但我不知道该怎么做 HTM
  • 为 maven-processor-plugin 编写注释处理器

    我有兴趣为 maven processor plugin 编写一个注释处理器 我对 Maven 比较陌生 处理器 Java 源代码应该位于项目路径中的哪个位置 例如 src main java 以便正确编译它 但最终不会成为我的工件 JAR
  • sendmsg() 中的辅助数据如何工作?

    sendmsg 允许将辅助数据发送到另一个套接字 我想知道这是如何运作的 辅助数据是否与普通消息一起打包 如果是这样 远程接收套接字如何知道如何解析它 远程接收客户端如何检索这些辅助数据 辅助数据不会在线发送 永远不会 对于 Unix 域套
  • WPF 数据绑定和验证规则最佳实践

    我有一个非常简单的 WPF 应用程序 在其中使用数据绑定来允许编辑一些自定义 CLR 对象 我现在想在用户单击 保存 时进行一些输入验证 然而 我读过的所有 WPF 书籍并没有真正为这个问题投入任何篇幅 我看到您可以创建自定义验证规则 但我
  • 如何将系统环境变量传递给app.yaml?

    是否可以 这是我的app yaml runtime nodejs8 env variables NODE ENV production PORT 8080 API KEY API KEY API KEY 就像一个占位符 当我跑步时API K
  • django 中的多数据库支持

    从一些论坛我了解到Django在较低级别添加了多数据库支持 但尚未添加较高级别的api 谁能告诉我如何在 Django 中实现多个数据库连接 有谁知道 Django 何时将完全 正式支持多个数据库连接 如果您只需要多个连接 您可以执行以下操
  • ValueError:只能比较相同标签的系列对象python

    df df1 loc df1 CUST ACCT KEY df2 CUST ACCT KEY 当我执行上述命令时 出现以下错误 ValueError 只能比较相同标签的系列对象 我究竟做错了什么 两列的 dtypes 均为int64 Pan
  • `go mod tidy` 无法下载私有 GitHub 存储库

    这是回应 not found github com me email protected invalid version git ls remote q origin in tmp gopath pkg mod cache vcs ea2b
  • 浮点误差的确定性有多大?

    我知道浮点计算存在准确性问题 并且有很多问题可以解释原因 我的问题是 如果我运行相同的计算两次 我是否可以始终依赖它产生相同的结果 哪些因素可能会影响这个 计算之间的时间 CPU当前状态 硬件不同 语言 平台 操作系统 太阳耀斑 我有一个简
  • 在 JavaScript 中,在循环内使用 wait 会阻止循环吗?

    采用以下循环 for var i 0 i lt 100 i let result await some slow async function do something with result Does await阻止循环 或者是i继续递增