带延迟的打字稿循环

2023-12-29

我正在尝试用 Typescript 创建一个节拍器。

我有这个 JavaScript 代码:

(function theLoop (i) {
        setTimeout(function () {
            metronome.play();
            if (--i) {
                theLoop(i);
            }
        }, 3000);          // interval set to 3000
    })(10);                // play it 10 times

我想将其转换为 Typescript 代码。不幸的是我不知道如何做到这一点(特别是关于最后一行=>})(10);

有人可以帮我弄这个吗?


正如大家所说,typescipt 是 javascript 的超集,因此您的代码是有效的 typescript,但以下是如何使用箭头函数(这也是es6javascript)和类型:

(function theLoop (i: number) {
        setTimeout(() => {
            metronome.play();
            if (--i) {
                theLoop(i);
            }
        }, 3000);
    })(10);

(操场上的代码 https://www.typescriptlang.org/play/#src=(function%20theLoop%20(i%3A%20number)%20%7B%0A%20%20%20%20%20%20%20%20setTimeout(()%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20metronome.play()%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(--i)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20theLoop(i)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%2C%203000)%3B%0A%20%20%20%20%7D)(10)%3B)

这是另一种变体:

let theLoop: (i: number) => void = (i: number) => {
    setTimeout(() => {
        metronome.play();
        if (--i) {
            theLoop(i);
        }
    }, 3000);
};

theLoop(10);

(操场上的代码 https://www.typescriptlang.org/play/#src=let%20theLoop%3A%20(i%3A%20number)%20%3D%3E%20void%20%3D%20(i%3A%20number)%20%3D%3E%20%7B%0A%20%20%20%20setTimeout(()%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20metronome.play()%3B%0A%20%20%20%20%20%20%20%20if%20(--i)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20theLoop(i)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%203000)%3B%0A%7D%3B%0A%0AtheLoop(10)%3B)


Edit

使用我给您的第二个选项,更改延迟很容易:

let theLoop: (i: number, delay?) => void = (i: number, delay = 3000) => {
    if (i % 2 === 0) {
        delay = 1500;
    }

    setTimeout(() => {
        metronome.play();
        if (--i) {
            theLoop(i);
        }
    }, delay);
};

theLoop(10);

(操场上的代码 https://www.typescriptlang.org/play/#src=let%20theLoop%3A%20(i%3A%20number%2C%20delay%3F)%20%3D%3E%20void%20%3D%20(i%3A%20number%2C%20delay%20%3D%203000)%20%3D%3E%20%7B%0A%20%20%20%20if%20(i%20%25%202%20%3D%3D%3D%200)%20%7B%0A%20%20%20%20%20%20%20%20delay%20%3D%201500%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20setTimeout(()%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20metronome.play()%3B%0A%20%20%20%20%20%20%20%20if%20(--i)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20theLoop(i)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%20delay)%3B%0A%7D%3B%0A%0AtheLoop(10)%3B)

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

带延迟的打字稿循环 的相关文章

  • 如何禁用WebStorms未使用的功能颜色功能?

    我想知道是否有人知道如何禁用 WebStorm 中的功能 如果您创建一个函数但尚未调用它 颜色将保持绿色而不是灰色 我进入首选项区域并将全局函数颜色更改为绿色 但只有当我调用它们时它们才会变成绿色 对于任何未调用的函数将保持灰色 转到文件
  • Razorpay 支付集成 -> 我如何检测关闭按钮 X 附近的 razorpay 模型

    我在 CI 框架中使用 Razorpay 当用户在没有付款的情况下关闭时 创建 razor 支付模型 然后对于取消订单 我希望通过状态更改为已取消来触发查询 那么我怎样才能检测到这一点 我已经在使用 by click jQuery 点击关闭
  • 为什么抽象类必须实现接口中的所有方法?

    interface BaseInter name string test void abstract class Abs implements BaseInter 在 TypeScript 中 编译器抱怨该类错误地实现了接口 Abs 类型中
  • Javascript 将即时生成的 BLOB 文件下载到特定文件夹中

    所以我正在尝试编写一个 Firefox Webextension 我想将网页的标题 网址和个人评论保存到文件中 myfile txt 这就是我得出的结论 我不希望我的 下载 文件夹很快变满 因此我想将它们下载到 下载 文件夹中包含的文件夹中
  • 从 Flow 中的对象值定义联合类型

    我有一个这样的枚举 const Filter ALL ALL COMPLETED COMPLETED UNCOMPLETED UNCOMPLETED 我想做的是声明一个联合类型 如下所示 type FilterType Filter ALL
  • Facebook Instant Game - 上传捆绑的 zip 文件会导致 Web 托管出现 SDK 参考错误

    当我尝试上传简单的游戏 应用程序时 我收到一条错误消息 游戏必须通过我们的 CDN 引用我们支持的 SDK 之一 不过我已经给出了 SDK 参考 难道不是这个吗 我也浏览了 facebook 文档的 SDK 参考 但它对我不起作用 有人以前
  • 正则表达式匹配除括号中的单词之外的所有单词 - javascript

    我使用以下正则表达式来匹配所有单词 mystr replace W s g function match p1 index title 请注意 单词可以包含特殊字符 例如德语变音符号 如何匹配除括号内的单词之外的所有单词 如果我有以下字符串
  • TypeScript 中的“环境”是什么意思

    我不明白这个词是什么意思ambient在下面的句子中 不能在环境上下文中声明函数实现 我不确定是否理解这个词的一般含义 英语不是我的母语 如果这里有什么具体含义 我也不明白 我试图用我的母语来理解 但在这种情况下无法理解 这就像curren
  • 在 X 轴刻度上渲染 HTML

    我想在 D3 图表的 x 轴上渲染 HTML 基本上 我希望轴上的每个标签都是到数据中另一列的超链接 我试过了 x domain data map function d return a href d Name a 但它根本不起作用 我得到
  • 如何从客户端 JavaScript 调用特定的 Node.js 方法

    在我的应用程序中 我在 node js 文件中创建了许多方法 我如何从客户端 JavaScript 调用特定方法 下面是我的node js 文件 exports method1 function exports method2 functi
  • 如何使用nodejs获取目录中第一个扩展名为.txt的文件?

    我所有文件所在的目录是 usr home jordan 该目录下有很多文件 在目录本身中 但有一个文件以 txt 扩展名命名 使用nodejs和fs 我想将带有txt扩展名的第一个文件 或任何文件 放入 mytxtfilepath 中 我在
  • 让屏幕阅读器读取使用 JavaScript 添加的新内容

    加载网页时 屏幕阅读器 例如 OS X 中的屏幕阅读器或 Windows 上的 JAWS 中的屏幕阅读器 将读取整个页面的内容 但是假设您的页面是动态的 当用户执行操作时 新内容就会添加到页面中 为了简单起见 假设您在某个位置显示一条消息
  • 垂直滚动,与 div/元素/锚点对齐/对齐

    我发现了一些可爱的网站 http www mini jp event campaign big point http www mini jp event campaign big point http www twenty8twelve c
  • For-each 在 ionic2 和 angularjs2 中

    我用 IONIC 2 Beta 版本制作了一个应用程序 我想用for each环形 是否可以在 Angular V2 中使用每个 Thanks 首先在Component 您必须声明要显示的数组 import Component from a
  • 如何检查令牌过期和注销用户?

    当用户单击注销按钮时 他 她可以自己注销 但是如果令牌过期 他 她就无法注销 因为在我的应用程序中 令牌在服务器端和前端都使用 当用户单击注销按钮时 如果令牌有效 则服务器和浏览器中的令牌都会被清除 当用户未注销并且他 她的令牌过期但未在浏
  • JavaScript - 替换 html 字符串中的特定单词索引

    我在 JS 字符串操作方面面临着一项具有挑战性的任务 有一个 HTML 字符串 我需要在其中替换特定单词索引处的单词 单词索引是忽略 HTML 标签时单词的编号 例如 下面是 HTML 字符串 span style font family
  • 如何重启ngOnInit来更新Interpolation

    有办法重新启动吗ngOnInit 改变变量时 因为我想重新开始ngOnInit 改变时theme多变的 这是我的代码 设置 ts export class SettingsPage implements OnInit phraseColor
  • 访问影子 DOM 中的元素

    是否有可能查找 Shadow DOM 中的元素与蟒蛇硒 示例用例 我有这个input with type date
  • 使用 JavaScript 和 HTML 打印表情符号

    为什么这有效 p x1f604 p 而这并没有 document getElementById emoji innerHTML String fromCharCode parseInt 1f604 16 JS 术语中的 char 实际上是一
  • React 不适用于 Android 4.4.2 Web 视图浏览器

    React 在我的 Android 手机上不起作用 我不认为这是我的代码错误 因为即使我写的唯一内容是 p hello world p 它仍然没有显示 在 chrome 远程吊顶上查看后 这显示了 Map is not defined 以前

随机推荐

  • 如何从java调用c++功能

    我有一个主要是 GUI 的 Java 程序 它显示从 C 命令行工具写入 xml 文件的数据 现在我想在java程序中添加一个按钮来刷新数据 这意味着我的程序必须调用 C 功能 通过系统调用从 java 调用程序的最佳方法是 c 程序将为
  • 使用 TRESTRequest 时客户端未指定证书

    使用 SSL URL 调用我们的内部服务器之一时 TRESTClient 和 TRESTRequest 给出错误 首先来自异常类 ENetHTTPCertificateException 然后来自 ERESTException 并显示消息
  • 可变高度的 CSS 浮动 Div [重复]

    这个问题在这里已经有答案了 我有无限数量的 100px 宽度的 div 可以放入 250px 宽度的父级中 无论高度如何 我都需要将 div 按行显示 如图所示 我已经尝试解决这个问题 但 div 高度似乎把它搞砸了 我非常感谢你的帮助 谢
  • 用元组定义函数

    如何定义一个接受所有元组 1 到 22 作为参数的函数 我有以下想法 def foo v Tuple foo 1 2 foo 1 2 3 EDIT 回答评论 我实际上正在尝试创建一个张量类 它是一组值和一组索引 索引可以是协变和 或逆变的
  • 使用 LINQ 合并 2 个列表并对多个属性求和

    我有一个包含以下属性的类 public class SomeClass public Int32 ObjectId1 get set public Int32 ObjectId2 get set public Int32 ActiveThi
  • 系统类加载器是否会加载类路径中的所有类,即使它们实际上并未使用?

    我正在使用 JDK 1 6 来运行一个小型应用程序 然而 我设置了一个非常庞大的类路径 其中包含很多类 当我运行应用程序时 类加载器中的所有类是否都会被加载 即使它们实际上并未在我的应用程序中使用 如果不是 如何强制类加载器这样做 如果是
  • 提交消息中的“CL”是什么意思?它代表什么?

    来自 Angular js 更改日志 在此 CL 之后 ng trim 不再影响 input type password 并且永远不会修剪密码值 这是来自其中一条提交消息 因此大概意味着补丁 它代表什么 更改日志 它的意思是更改列表 创建变
  • 使用 CloudKit 时出现“无法发送有效签名”错误

    任何人都知道可能导致此错误的原因 该错误在下面的查询块中返回
  • 如何使用argparse打开文件?

    我想使用打开文件进行阅读argparse 在 cmd 中它必须如下所示 my program py filepath 这是我的尝试 parser argparse ArgumentParser parser add argument fil
  • C# .net MVC,设置 Google 应用程序凭据 JSON 文件的路径

    我刚刚让这个 Google 示例项目在我的 VS2015 上运行 但是 当我发布到 IIS 并托管它后 当我打开链接时 网页不断显示此消息 如图所示 我将密钥添加到了 web config 中 但仍然不起作用 只是想知道以前是否有人这样做过
  • Facebook Graph API 读取关注者计数

    使用 Facebook Graph API 或其他方式 当前是否有可用的方法来获取用户的关注者数量 您可能认为这将是一个简单的可读度量字段user https developers facebook com docs graph api r
  • Grails ehcache 插件 - 同一 VM 中已存在另一个未命名的 CacheManager

    我使用 ehcache 作为二级缓存来运行 Grails 应用程序 并且它可以工作 我安装了ehcache插件 cache插件 然后就没有了 我尝试了互联网上几乎所有的解决方案 但没有找到我一直得到的解决方案Another unnamed
  • 如何将 Flutter 应用主题默认设置为深色?

    我在 flutter 中创建了一个简单的登录 UI 但我不知道如何使应用程序的整体主题变暗 我的意思是 将来 如果我向应用程序添加更多功能 它应该全部采用深色主题 有什么办法可以做到这一点吗 我使用了一个单独的 dart 文件 login
  • 在 Objective-C 中比较字符串和数组

    这是一个非常基本的问题 我相信您能够很快回答 请不要嘲笑我的无知 我有一个字符串 我想将其与字符串数组进行比较 仅当字符串不是数组的一部分时 我才想执行操作 我尝试了以下代码 但不起作用 我确实明白为什么 但我就是想不出正确的方法 请帮助我
  • 如何将 ILMerge 集成到 Visual Studio 构建过程中以合并程序集?

    我想将 VB NET 控制台应用程序项目引用的一个 NET DLL 程序集和一个 C 类库项目合并到一个命令行控制台可执行文件中 我可以从命令行使用 ILMerge 来完成此操作 但我想将参考程序集和项目的这种合并集成到 Visual St
  • form_for 的路由范围问题(部分)

    尝试路由 scope shortcut do resources text elems end 使用带有表单部分的基本脚手架 form html erb 问题是 当我打电话时edit动作 表单 html 显示为
  • UserDefaults 不使用 Swift 保存

    我正在尝试使用 UserDefaults 来持久保存布尔值 这是我的代码 public static var isOffline UserDefaults standard bool forKey isOffline didSet prin
  • 在 JExcelApi 中制作新颜色

    我正在使用 JExcelApi 生成 XLS 文件 从jxl format 颜色 http jexcelapi sourceforge net resources javadocs 2 6 10 docs jxl format Colour
  • 拥有许多小型 Azure 存储 Blob 容器(每个容器都包含一些 Blob)更好,还是拥有一个包含大量 Blob 的大型容器更好?

    所以场景如下 我有一个 Web 服务的多个实例 用于将 blob 数据写入 Azure 存储 我需要能够根据收到的时间将 blob 分组到容器 或虚拟目录 中 偶尔 最坏的情况是每天 旧的 blob 会被处理然后删除 我有两个选择 Opti
  • 带延迟的打字稿循环

    我正在尝试用 Typescript 创建一个节拍器 我有这个 JavaScript 代码 function theLoop i setTimeout function metronome play if i theLoop i 3000 i