在 for 循环中等待点击事件 - 类似于prompt()

2024-01-14

这可能没有最伟大的标题。我试图理解回调函数,我想知道如何在不丢失 for 循环的情况下替换以下代码中的提示()?

for(i=0;i<4;i++){
  let x = prompt("Input an integer");
  // store input into an array
}

我尝试过类似的事情:

for(let i = 0; i<4; i++){
  let x = document.getElementById("someId");
  x.addEventListener("click", rcvInput(function(i){
    if(i == 3){
      x.removeEventListener("click", rcvInput)
    }
  }));
}
function rcvInput(callback){
  //store input into an array
  callback();
}

我知道这可以在没有 for 循环的情况下完成,我更好奇回调是否能够暂停循环并等待输入?


根据您的最终目标是什么,我很确定有更好的方法来做到这一点。但为了做到这一点:

您可以创建一个方法,返回一个在单击发生时解析的承诺。然后你可以使用async/await做你需要做的事。

通过使用Promise and await正在使用它,您可以从技术上“暂停”您的for循环直到有事情发生。在本例中,单击一下。

记住包含的方法for循环必须是async.

function getClick() {
  return new Promise(acc => {
    function handleClick() {
      document.removeEventListener('click', handleClick);
      acc();
    }
    document.addEventListener('click', handleClick);
  });
}


async function main() {
  for (let i=0;i<4;i++) {
    console.log("waiting for a click", i);
    await getClick();
    console.log("click received", i);
  }
  console.log("done");
}

main();

尝试一下这个plunkr https://plnkr.co/edit/ADzvLiJmn38Mmp0ipu2u?p=preview.

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

在 for 循环中等待点击事件 - 类似于prompt() 的相关文章

  • 如何在同一页面上使用AJAX处理多个表单

    我有一个表单 当我单击 提交 时 它就被提交了 然后该表单隐藏 操作页面的结果显示在 div 中 classname dig 它工作正常 但是当我添加另一个表单时 它停止正常工作并且所有表单同时提交 我如何更改我的代码 done click
  • 主干视图 DOM 元素已删除

    我一直在阅读有关 Backbone js 僵尸 或内存泄漏 问题的信息 基本上 当您不再需要该元素时 您必须从 DOM 中解除绑定并删除该元素 以确保所有事件也被删除 现在 我有一个包含几个容器的单页应用程序 div div div div
  • 了解设置 JQuery 变量

    了解设置 JQuery 变量 最近 我通过在 StackOverflow 上遇到的另一个问题寻找帮助 了解到如何设置 JQuery 变量 如下所示 您可以通过简单地调用变量来创建输入字段 并且锚变量似乎也定义了样式 var clicked
  • 如何重置使用 JavaScript 更改的 CSS 属性?

    我的导航按钮的宽度从 100px 增加到 150px 当鼠标悬停在 nav li hover width 150px 但是使用 javascript 我已经做到了 无论选择哪个选项 宽度都将继续为 150px 当选择每个选项时 它会使其他选
  • 检查 JavaScript 字符串是否为 URL

    JavaScript 有没有办法检查字符串是否是 URL 正则表达式被排除在外 因为 URL 很可能是这样写的stackoverflow 也就是说它可能没有 com www or http 如果你想检查一个字符串是否是有效的 HTTP UR
  • 如何防止 Iframe 在与浏览器交互后弄乱浏览器的历史记录?

    因此 就我而言 我使用 Iframe 将 Grafana 附加到我的页面 这为我提供了漂亮且易于使用的图表 可以注意到 每次在图表上进行放大或缩小 使用鼠标单击 交互后 Grafana 的 Iframe 都会在我的 Angular 页面上触
  • 为什么是 javascript:history.go(-1);无法在移动设备上工作?

    首先 一些背景 我有一个向用户呈现搜索页面 html 表单 的应用程序 填写标准并单击 搜索 按钮后 结果将显示在标准部分下方 在结果列表中 您可以通过单击将您带到新页面的链接来查看单个结果的详细信息 在详细信息页面中 我添加了一个 返回结
  • Jquery/Javascript 上传和下载文件,无需后端

    是否可以在没有后端服务器的情况下在 JavaScript 函数中下载和上传文件 我需要导出和导入由 JavaScript 函数生成的 XML 我想创建按钮 保存 xml 来保存文件 但我不知道是否可行 另一方面 我希望将 XML 文件直接上
  • 使用 KnockoutJs 映射插件进行递归模板化

    我正在尝试使用以下方法在树上进行递归模板化ko映射 插入 http knockoutjs com documentation plugins mapping html 但我无法渲染它 除非我定义separate每个级别的模板 在以下情况下
  • Meteor - 从客户端取消服务器方法

    我正在通过服务器方法执行数据库计数 用户可以选择他们希望如何执行计数 然后调用该方法 我的问题是 计数可能需要一些时间 并且用户可能会在方法运行时改变主意并请求不同的计数 有什么方法可以取消调用的方法并运行新的计数吗 我认为 this un
  • 在 webpack 2.x 中使用 autoprefixer 和 postcss

    如何使用autoprefixer使用 webpack 2 x 以前 它曾经是这样的 module loaders test scss loader style css sass postcss postcss gt return autop
  • 提交表单并重定向页面

    我在 SO 上看到了很多与此相关的其他问题 但没有一个对我有用 我正在尝试提交POST表单 然后将用户重定向到另一个页面 但我无法同时实现这两种情况 我可以获取重定向或帖子 但不能同时获取两者 这是我现在所拥有的
  • Grails 在 javascript 内的 GSP 站点中使用 grails var

    我有一个在 GSP 文件中的 javascript 代码中使用 grails 变量值的问题 例如 我有一个会话值session getAttribute selectedValue 我想在 javascript 代码部分使用这个值 我现在的
  • 为 illustrator 导出脚本以保存为 web jpg

    任何人都可以帮我为 illustrator CC2017 编写一个脚本 将文件以 JPG 格式导出到网络 旧版 然后保存文件并关闭 我有 700 个文件 每个文件有 2 个画板 单击 文件 gt 导出 gt 另存为 Web 旧版 然后右键文
  • 为什么我不能在 AngularJS 中使用 data-* 作为指令的属性名称?

    On the t他的笨蛋 http plnkr co edit l3KoY3 p preview您可以注意到属性名称模式的奇怪行为data 在指令中 电话 Test of data named attribute br
  • 在 vue.js 中访问数组对象属性

    给定以下数组vue js packageMaps Object packageMap 0 Object Id 16 PackageType flag list ProductCode F BannerBase packageMap 1 Ob
  • 条件在反应本机生产中失败,但在开发中有效

    我创建了一个反应本机应用程序 我需要通过它进行比较 如果属实 就会执行死刑 问题是 该条件适用于 React Native 开发模式 而不适用于 React Native 生产版本 我使用 firebase 作为数据库 也使用 redux
  • Safari 支持 JavaScript window.onerror 吗?

    我有一个附加到 window onerror 的函数 window onerror function errorMsg url line window alert asdf 这在 firefox chrome 和 IE 中工作正常 但在 s
  • JQuery 图像上传不适用于未来的活动

    我希望我的用户可以通过帖子上传图像 因此 每个回复表单都有一个上传表单 用户可以通过单击上传按钮上传图像 然后单击提交来提交帖子 现在我的上传表单可以上传第一个回复的图像 但第二个回复的上传不起作用 我的提交过程 Ajax 在 php 提交
  • 使用 Ajax 请求作为源数据的 Jquery 自动完成搜索

    我想做的事 我想使用 jquery 自动完成函数创建一个输入文本字段 该函数从跨域curl 请求获取源数据 结果应该与此示例完全相同 CSS 在这里并不重要 http abload de img jquerydblf5 png http a

随机推荐

  • Python 2.7,PIP:“构建轮子失败......”

    第一次使用pip 尝试使用python docs samples 教程库 https github com GoogleCloudPlatform python docs samples 当我运行 python m pip install
  • UIView-Encapsulated-Layout 与 UIViewController 中的 UICollectionView 嵌入视图中

    由于某种原因 在嵌入的视图控制器内使用集合视图会在集合视图约束上引发 UIView Encapsulated Layout 我无法设置高度或顶部 底部边距 关于为什么会发生这种情况有什么想法吗 我一直在通过故事板添加约束 我什至尝试以编程方
  • 如何在 div 中间对齐旋转文本

    我想将旋转文本垂直对齐在 100 高度 div 的中间 如下图所示 因此 每当屏幕尺寸发生变化时 文本都会保留在 div 的中间 有人有解决方案吗 http jsfiddle net SVkPU 1 http jsfiddle net SV
  • 检查 Excel 中的组合?

    我有两道多项选择题 有 9 种可能的选择 总共有 20 种答案组合 每个组合都被分配一个值 在 Excel 中 我需要检查不同组合的答案并告诉我该组合的值 这怎么可能 我需要使用什么公式 问答示例 可能的答案 这是我尝试过的方法 它有效 但
  • 如何加快file_get_contents的速度?

    这是我的代码 language GET soundtype word GET sound word urlencode word if language english url
  • 使用 Ransack gem 进行复选框搜索

    我需要过滤表中的数据 为此 我发现元搜索 https github com ernie meta search宝石 我安装了 meta search 并收到此错误 uninitialized constantActiveRecord Ass
  • PHP - SimpleXML - AddChild 与另一个 SimpleXMLElement

    我正在尝试构建一个相当复杂的 XML 文档 我的 XML 文档中有很多重复的部分 我想我应该使用多个字符串模板作为这些部分的基础文档 并使用 simplexml load string 创建 XML 元素的实例 所以我有一个 SimpleX
  • 带有 @nguniversal 的 Angular SSR 和用于 PostCSS 支持的自定义 webpack

    我的 Angular 10 2 1 应用程序使用自定义 webpack 构建器在 scss 文件中提供 PostCSS 支持 在 SPA 模式下工作得非常好 角度 json build builder angular builders cu
  • Equals() 与静态 string.Equals()

    在阅读 C 中的字符串比较时 我发现了很多方法来比较 2 个字符串以查看它们是否相等 我已经习惯了 来自 C 但我了解到 如果将对象与字符串进行比较 那么 默认为参考值 或类似的值 那么对于Equals 方法可以说我有 2 个字符串 str
  • 尝试让 Spring/Consul/Vault 协同工作

    我正在尝试做一些我认为简单的事情 我想用Consul https www consul io用于配置 以及Vault https www vaultproject io为了秘密 我正在寻找一个像这样的简单应用程序 它允许我从 Consul
  • 在 Mac 上哪里可以找到 bashrc 文件?

    你好我正在关注这个page http docs python guide org en latest starting install osx 我正在我的 mac 上安装 Python 以便我可以设置Django Eclipse开发环境 但
  • 覆盖 google.com 匿名函数的一部分

    如果一个 javascript 函数是匿名声明的 有什么方法可以覆盖它或它的一部分吗 我试图阻止 google com 的即时搜索劫持向上和向下箭头键以在您的搜索排名中移动 我已经确定了我认为有问题的代码部分 键码 38 和 40 用于向下
  • 如何自定义魅力报告标题和徽标

    下面附上通过 allure 生成的 allure 报告图像 想要使用我自己的标题和徽标而不是 ALLURE REPORT 和默认徽标来自定义报告标题和徽标 图像突出显示为黄色 感谢你的帮助 要更改徽标 您应该将自定义徽标插件放入插件文件夹中
  • 如何正确删除和重新添加实体数据模型

    这里是实体框架的新手 使用VS 2010和SQL Server 2008 Express DB 添加新表后 我在刷新实体数据模型时遇到问题 因此 我遵循了在这里找到的建议 删除并重新生成模型 我进入实体数据模型向导的 选择您的数据连接 部分
  • 根据格式为 %d/%m/%Y 的日期按时间顺序排序数据帧

    我有一些数据必须格式化为 d m Y 数据不按时间顺序排列 因为它是按第一个数字 日而不是月份 排序的 我希望我能指定order or reorder我希望排序以不同的方式进行 我只是不知道该怎么做 以下是一些要订购的日期数据 date 1
  • 相当于 Struts 1.x“bean:define”标签?

    我正在致力于将旧的 Struts 1 x 应用程序转换为 Spring MVC 并且在一些 JSP 页面中 bean define标签用于从资源包中获取字符串 然后在页面中稍后使用
  • 如何查找 Active Directory OAuth 身份验证的受众字段? (如何从 Azure 逻辑应用程序向 DevOps 发送发布请求?)

    请帮我解决这个问题 我正在尝试从 Azure 逻辑应用程序向 DevOps 发送发布请求以创建发布 我在逻辑应用程序中创建了一个 http 操作 这是用于创建发布的 uri https vsrm dev azure com https vs
  • 清理遗留代码“header spaghetti”

    任何清理 标题意大利面 的推荐做法 这会导致极其严重的后果 编译时间慢 Linux Unix GCC 中是否有相当于 pragma Once 的东西 发现与此相关的冲突消息 Thanks 假设您熟悉 包含防护 ifdef 在标头开头 加快构
  • 使用 opencv 从 SIFT 生成百分比相似度分数

    在 python 2 7 x opencv 2 4 9 中使用 SIFT 比较两个图像后 我一直试图找到一种生成相似性得分 以 为单位 的方法 我只能找到在比赛之间画线的例子 我该怎么做呢 Matlab 中有一个相当于 vl ubcmatc
  • 在 for 循环中等待点击事件 - 类似于prompt()

    这可能没有最伟大的标题 我试图理解回调函数 我想知道如何在不丢失 for 循环的情况下替换以下代码中的提示 for i 0 i lt 4 i let x prompt Input an integer store input into an