JavaScript - 如何等待/SetTimeOut/睡眠/延迟

2024-04-12

这又是我的剪刀石头布游戏。

目前,用户无法看到发生了什么,因为在提示输入(石头、布或剪刀)后,他们会立即重新提示。

问题是我怎样才能使程序延迟,以便他们至少可以读取正在发生的事情。

我读到 JavaScript 中不存在 sleep() 。我正在尝试使用 setTimeOut 但是,setTimeOut 导致程序无法运行。

关于如何在第一个用户输入后延迟下一个用户输入的任何想法。这可以通过任何 JS 解决方案来完成。

这是我现在的代码

function playUntil(rounds) {
        var playerWins = 0;
        var computerWins = 0;
        setTimeout(function() {
        while ((playerWins < rounds) && (computerWins < rounds)) {
          var computerMove = getComputerMove();
          var winner = getWinner(playerMove, computerMove);
          console.log('The player has chosen ' + playerMove + '. The computer has chosen ' + computerMove);
          if (winner === "Player") {
              playerWins += 1; 
          } 
          else if (winner === "Computer") {
              computerWins += 1;
          } 
          if ((playerWins == rounds) || (computerWins == rounds)) {
              console.log("The game is over! The " + winner + " has taken out the game!");
              console.log("The final score was Player - [" + playerWins + "] to Computer - [" + computerWins + "]");
          }
          else {
              console.log(winner + ' takes the round. It is now ' + playerWins + ' to ' + computerWins);
          }
          }
      return [playerWins, computerWins]
    ;},5000);
    }

您无法在 setTimeout、setInterval 或其他子函数上返回父函数的值,因为它们具有不同的作用域。

您可以使用承诺来代替:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise

Bad:

function x () {
  setTimeout(function () {
     return "anything";
  }, 5000);
}

使用承诺:

function x () {
  return new Promise(function (resolve, reject) {
    setTimeout(function () {
      resolve("anything");
    }, 5000);
  });
}

然后你可以调用如下函数:

x()
.then(
  function (result) {
    alert(result); // Do anything.
  }
);

PD:我的英语不好,对不起!

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

JavaScript - 如何等待/SetTimeOut/睡眠/延迟 的相关文章

  • libxmljs 的替代品 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 目标 使用 Node js 访问网页 使用 xpath 语法操作 DOM 并打印新的 DOM libxm
  • 如何设置上传的文件名?

    By using multer I made it to request image file like this 这个文件存储在我设置的 上传 文件夹中 我的代码如下 var multer require multer var uploa
  • 为什么隐式符号到字符串转换会导致 JavaScript 中出现类型错误?

    有一个 toString on Symbol在 ES6 中 它返回字符串表示形式Symbol 但想知道为什么 Symbol 不起作用 运行这个表达式会抛出TypeError我没想到 后者只是打电话吗 toString 在一个新的Symbol
  • 您可以将现有的 div 复制到模式对话框吗

    我有一个带有多个面板的仪表板来显示不同的信息 我希望能够添加一个按钮来以模式显示面板 我正在使用引导程序 我所能找到的只是已经编写的模态 我想复制作为面板的 div 标签的内容 然后将其显示在模型中 但我不确定如何进行 该面板的 html
  • 在动态创建的元素上添加事件监听器[重复]

    这个问题在这里已经有答案了 是否可以向所有动态生成的元素添加事件侦听器 Javascript 我不是页面的所有者 因此我无法以静态方式添加侦听器 对于页面加载时创建的所有元素 我使用 doc body addEventListener cl
  • 限制 Dropzone 仅上传特定类型的文件

    我正在使用 Dropzone 上传文件 这是我的代码 div div
  • window.open:是否可以打开一个新窗口并修改其 DOM

    我想打开一个新窗口 var my window open iframe html blank height 600 width 600 但当我打开它时 我想修改它的DOM 我尝试过 var div my document createEle
  • setInterval() 在用户离开选项卡时暂停?

    javascript 中是否有任何方法的行为类似于 setInterval 并且当用户离开选项卡时停止并在用户再次进入选项卡时恢复 您可以使用以下方法创建自己的 API可见性API https developer mozilla org e
  • 使用 :hover 作为元素的内联样式(使用 HTML/CSS/php)[重复]

    这个问题在这里已经有答案了 可能的重复 如何将 a hover 规则嵌入到文档中间的样式属性中 https stackoverflow com questions 131653 how do i embed an ahover rule i
  • 窗口大小调整触发的 DOM 事件

    我有一个布局相当复杂的页面 最初打开页面时 某些元素的对齐存在问题 但是 可以通过更改浏览器窗口的大小来 永久 解决此问题 显然 我不希望用户必须调整浏览器窗口的大小才能使页面正确显示 所以我想知道是否有一种方法可以在页面首次加载时以编程方
  • ReactCSSTransitionGroup 组件WillLeave 未调用

    我尝试使用 ReactCssTransition 但不知何故该事件没有被调用 componentWillLeave 这是我的组件 import React Component from react import TransitionGrou
  • put方法中的Angularjs文件上传不起作用

    我有一个简单的待办事项应用程序 我试图在其中上传照片和单个待办事项 现在我已经创建了这个工厂函数来负责待办事项的创建 todosFactory insertTodo function todo return http post baseUr
  • 将 window.location 传递给 Flask url_for

    我正在使用 python 在我的页面上 当匿名用户转到登录页面时 我想将一个变量传递到后端 以便它指示用户来自哪里 发送 URL 因此 当用户单击此锚链接时 a href Sign in a 我想发送用户当前所在页面的当前 URL
  • @aspnet/signalr 与 @microsoft/signalr javascript 库

    aspnet signalr 与 microsoft signalr javascript 库有什么区别 两者似乎都对 DotNetCore SignalR 有效 两者似乎都很活跃 在一些教程中 我找到 aspnet signalr 在Do
  • 有没有办法伪造同步 XHR 请求?

    我正在使用 Emscripten 系统将一堆 C 代码移植到 Javascript C 代码有很多调用fopen这是一个同步 IO 调用 在 Emscripten 中 我们使用对本地资源的 XHR 请求来模拟这一点however 在 Fir
  • jQuery 悬停时滚动到 div 并返回到第一个元素

    我基本上有一个具有设定尺寸的 div 和overflow hidden 该 div 包含 7 个子 div 但一次只显示一个 我希望当它们各自的链接悬停时能够平滑地垂直滚动 但是 第一部分 div 没有链接 并且是没有悬停链接时的默认部分
  • 根据特定字符获取整个字符串或子字符串

    我有一个包含 MIME 类型的字符串 例如application json 现在我想将其与实际的 HTTP 标头进行比较 在本例中content type 如果标头包含 MIME 类型 那么就很简单 if mimeType contentT
  • 是否可以将请求标头添加到 CORS 预检请求中?

    我有一个从外部服务器 不是服务器 访问 API 的网站 为网站提供服务 通过简单的XmlHttpRequest 见下文 那个API 需要将用于访问服务的 API 密钥添加为请求标头 然而 正如这些CORS https developer m
  • Javascript onload 不起作用[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我正在使用
  • 如何:带有 onclick 的 div 位于另一个带有 onclick 的 div 中

    只是一个简单的问题 我遇到了 div 与 onclick javascript 之间的问题 当我点击内部 div 时 它应该只触发它的 onclick javascript 但外部 div 的 javascript 也会被触发 用户如何点击

随机推荐

  • Rails pub/sub 与 faye

    在 Rails 应用程序中 我使用 Faye 机架适配器 来推送通知 用于聊天 我想将 Faye 用于另一个用例 更多推送通知 但我似乎无法弄清楚 在我的应用程序中 可以从后台作业创建模型 因此我想在创建模型时刷新我的视图之一 例如索引操作
  • Python3:将PDF下载到内存并将第一页转换为图像

    我尝试执行以下操作 将 PDF 文件下载到内存 将第一页转换为图像 将该图像与 tweepy 一起使用 我尝试了以下代码 但遇到了错误 from PIL import Image from pdf2image import convert
  • 获取 JScrollPane 中显示的组件

    我有一个包含 JPanel 的 JScrollPane 我用许多按钮填充了这个 JPanel 是否有可能获取当前显示的按钮 我知道我可以通过以下方式访问 JPanel 的子项jpanel getComponents 但这些都是此窗格中的所有
  • NestJs - 使用具有 2 个主体类选项的类验证器验证请求主体

    我有一个休息电话 它可能会收到类型为 classA 和 classB 的主体 我需要将其保留为两个不同的类 例子 classes class ClassA IsString Length 1 128 public readonly name
  • “Skipcond”在 MARIE 汇编语言中如何工作?

    我正在尝试理解 MARIE 汇编语言 我不太明白skipcond为了 做类似的事情 lt or gt 或乘法或除法 我正在采用这个简单的程序 x 1 while x lt 10 do x x 1 endwhile 我不明白的是如何使用某些跳
  • 以 JSON/XML 格式呈现非活动记录对象 [RoR]

    我正在使用 ruby gem whois 测试一个小型 whois API 由于 whois 响应的格式非常有趣 有时我被要求不要使用 ActiveRecord 来保存响应 简而言之 它的工作原理如下 用户从视图中以表单形式输入域名 操作
  • 暂停和继续秒表

    我正在尝试创建秒表 我已经做到了 但我想随时暂停并继续时间 我尝试过一些事情 但我不知道该怎么做 有谁能解释一下我该怎么做吗 import time tkinter canvas tkinter Canvas width 1900 heig
  • 将一种类型的委托动态转换为另一种类型

    我正在使用反射来获取恰好是委托的字段 我需要用我自己的委托替换这个委托 但是委托的类型是私有的 所以我无法从我的方法创建它并分配它 我有一个具有完全匹配签名的委托类型 那么有什么方法可以动态地将我的委托转换为其他类型吗 我有一个代表未知类型
  • 为什么 String.addingPercentEncoding() 的返回值是可选的?

    的签名String百分比转义的方法是 func addingPercentEncoding withAllowedCharacters CharacterSet gt String 这是stringByAddingPercentEncodi
  • 无法点击 api 来验证 otp(使用 Volley)

    我给出了我在 AndroidHive 的 github 存储库上提出的查询的链接 请看一下 我的问题 https github com rajatbeck LoginWithOTP issues 1 https github com raj
  • 如何禁止任何应用程序的所有线程在特定 CPU 核心上运行,除非我指定的线程?

    如何禁止任何应用程序的所有线程在特定 CPU 核心上运行 除非我指定的线程 在 Win nix 中 要将线程或进程绑定到特定的 CPU 内核 我们可以使用 OS API 函数 POSIX 中的 sched setaffinity 和 WIN
  • NSURLSessions 后台会话的正确用例是什么?

    在评论中this https stackoverflow com a 12074879 5175709我正在讨论后台任务 最终导致 将backgroundTasks 用于与下载 上传无关的任何内容 对于上传 下载 请使用 NSURLSess
  • 有没有好的方法将外部资源数据包含到 Rust 源代码中?

    想象一下下面的例子 let SHADER static str version 140 attribute vec2 v coord uniform sampler2D fbo texture varying vec2 f texcoord
  • 自定义二进制数据的 cURL POST(不是表单内容)

    以下代码片段成功发送 POST 请求但未发送 sendStream 中的数据 该流有效且包含数据 这已被验证 的问题 curl setopt request CURLOPT HTTPHEADER array Content type app
  • 获取 JSON 中未知值后面的字符串

    我使用维基百科的 API 来获取有关页面的信息 API 给了我这样的 JSON query pages 188791 pageid 188791 ns 0 title Vanit u00e9 langlinks lang bg Vanita
  • React Native expo 图像选择器将图像上传到 firebase 存储(v9)崩溃

    我正在尝试将从 expo 图像选择器中选择的图像上传到 firebase 存储 因为我正在使用 expo 我检查了 expo 图像选择器 git 并找到了 firebase 的 uploadImageAsync 所以我复制了它并只做了一点更
  • Jquery 对话框仅打开一次

    全部 我知道有人问过这个问题 但以前的解决方案似乎不适用于我的情况 我有一个简单的表 每行都有许多记录 最后一列是删除超链接 我正在尝试使用对话框弹出并确认删除 如果我使用对话框所在的 div 的显式名称 我将其恰好放置在表格所在的 div
  • Google 通讯录广播/推送/通知/Hook API

    我正在寻找一种在编辑 删除或创建谷歌方面的联系人时接收来自谷歌的通知 广播的方法 我查看了 Google Contacts API 文档 但找不到任何内容 我认为一定有办法 例如Android 肯定不会轮询更改 Google Contact
  • 文本底部的几个像素被切断

    我实在搞不懂这个案子到底是怎么回事 在多行文本上 底部的几个像素被切除 Setting line height normal 为我工作
  • JavaScript - 如何等待/SetTimeOut/睡眠/延迟

    这又是我的剪刀石头布游戏 目前 用户无法看到发生了什么 因为在提示输入 石头 布或剪刀 后 他们会立即重新提示 问题是我怎样才能使程序延迟 以便他们至少可以读取正在发生的事情 我读到 JavaScript 中不存在 sleep 我正在尝试使