每秒打印一些东西,并且在 Perl 6 中使用 React 每 5 秒睡眠 10 秒?

2024-05-12

我想每秒打印当前时间,并且还想每5秒睡眠10秒:

react {
    whenever Supply.interval(1) {
        say DateTime.now.posix;
    }

    whenever Supply.interval(5) {
        sleep 10;
        say 'Sleep Done';
    }

    whenever signal(SIGINT) {
        say "Done.";
        done;
    }
}

输出不是我想要的:

1542371045
Sleep Done
1542371055
Sleep Done
1542371065
Sleep Done
1542371075
Done.
...

我想要的是这样的:

1542371045
1542371046
1542371047
1542371048
1542371049 
Sleep Done
1542371059
1542371060
1542371061  
1542371062 
1542371063         
Sleep Done
Done.

不太了解Promise, Supply……关于Raku,这可能吗?


根据具体需要,我可能会这样写:

react {
    sub sequence() {
        whenever Supply.interval(1).head(5) {
            say DateTime.now.posix;
            LAST whenever Promise.in(10) {
                say "Sleep done";
                sequence();
            }
        }
    }
    sequence();
}   

其输出如下:

1542395158
1542395159
1542395160
1542395161
1542395162
Sleep done
1542395172
1542395173
1542395174
1542395175
1542395176
Sleep done
1542395186
1542395187
1542395188
...

这将绝对确保您在 10 秒暂停之间获得 5 个滴答声;使用两个独立的间隔电源来实现这一点(就像这里的许多解决方案一样)不会对此给出任何严格的保证,并且可能会时不时地错过一个滴答声。 (其中一个没有的是可爱的,rotor,如果您不需要实际打印“睡眠完成”的内容,这是一个不错的选择)。它也没有状态(变量)和条件,这是相当好的。

虽然这looks就像它可能是递归的,因为whenever是一个异步循环构造,它实际上根本不会构建调用堆栈。

它也是完全由异步构造构建的,因此在 Perl 6.d 中不会 - 如果react在线程池上触发 - 永远阻塞真正的操作系统线程。所以你可能有数千个这样的活动。相比之下,sleep会阻塞一个真正的线程,这就是sleep传统上预计会这样做,但如果以其他方式处理异步构造,则不太适合。

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

每秒打印一些东西,并且在 Perl 6 中使用 React 每 5 秒睡眠 10 秒? 的相关文章

随机推荐

  • Spark日期格式问题

    我在火花日期格式中观察到奇怪的行为 实际上我需要转换日期yy to yyyy 日期转换后 日期应为 20yy 我尝试过如下 2040年后失败 import org apache spark sql functions val df Seq
  • .NET WebBrowser 控件可以使用 IE9 吗?

    我意识到这是一个早期版本并且不稳定 我不会梦想在任何其他项目中将默认的 Web 浏览器控件替换为 IE9 但在这种情况下 我特别需要 IE9 与其他版本进行比较 我想让 NET WebBrowser 控件使用 IE9 而不是机器上默认版本的
  • getaddrinfo在程序中调用assert

    我正在使用 libcurl 开发一个程序 该程序创建一个线程 该线程又使用 libcurl 发出 HTTP 请求 但有时程序会因错误而崩溃 netlink 描述符上出现意外错误 9 在curl中关闭AsynchDNS之后 但问题依然存在 据
  • Maven 目标的默认阶段?

    据我了解 在 Maven 中 插件目标可以附加到生命周期阶段 如果没有定义 默认阶段是什么 根据我的经验 这取决于插件的目标 例如 组装 单个 http maven apache org plugins maven assembly plu
  • 在 SwiftUI App 中实现深色模式切换

    我目前正在我的应用程序中研究深色模式 虽然由于我的 SwiftUI 基础 深色模式本身并不困难 但我正在努力选择将 ColorScheme 设置为独立于系统 ColorScheme 的选项 我在苹果人机界面指南中找到了这一点 https i
  • 我可以要求在 mongodb 集合中设置属性吗? (不为空)

    我可以在 mongodb 中定义一个需要设置某些属性的模式吗 很像NOT NULL在 SQL 中 如果可以的话 这个的语法是什么 我正在使用 Node js 和猫鼬 猫鼬 v3 6 15 MongoDB v2 4 5 EditCharles
  • React 无法识别 DOM 元素上的 `isActive` 属性 - styled-components

    我有以下内容svg我传递道具的组件 import React from react export default props gt
  • Perl 的 grep 函数如何与正则表达式一起使用?

    以下 grep 函数如何工作 什么作用 0o1Iil do chars grep 0o1Iil 0 9 A Z a z use Data Dumper print Dumper chars 在 chars中生成以下内容 VAR1 0 VAR
  • 更改 IPython 笔记本小部件中标签的大小

    这确实是一个小问题 但仍然很烦人 我正在编写一个工具 允许用户设置一堆数字参数以在 IPython 笔记本中进行分析 我把它设置为一堆FloatTextWidgets in a ContainerWidget 它们有相当长的标签 例如 姿势
  • 为什么 (jQuery) Waypoints“视图底部”不适用于隐藏元素?

    我试图使用 jQuery 和 Waypoints 以前称为 jQuery Waypoints 在用户向下滚动时动态显示隐藏的图像 我发现我可以很容易地向元素添加一个路径点 并在元素 在视图中 时触发处理程序 偏移属性设置在视图底部 但是 尝
  • Android:自动从项目包中删除未使用的图像

    我正在开发一个相当大的android项目 并且在drawable文件夹中有很多图像 其中许多图像未在项目中使用 因为它们已被替换 并且占用了宝贵的空间 有什么方法可以自动找到这些图像并删除它们 而不是搜索项目中的每个图像 我使用过的一些工具
  • 以编程方式将 UITextField 设置为编辑模式

    我有一个UITextField我想以编程方式设置为编辑模式 屏幕上的键盘和文本字段框中的光标 我知道当此视图出现在屏幕上时 用户将处于编辑模式 因此我希望用户不必点击文本字段 a 的 编辑 属性UITextField是只读的 所以这是行不通
  • 使用Python pool.map让多个进程对列表执行操作

    我试图启动 6 个线程 每个线程从列表文件中获取一个项目 将其删除 然后打印该值 from multiprocessing import Pool files a b c d e f def convert file process fil
  • Groovy 和 Groovy++,它们有什么不同吗?

    我最近知道groovy 已经发布了 Groovy和Groovy 的主要区别是什么 来自 groovy 页面http code google com p groovypptest http code google com p groovypp
  • 如何以编程方式找出哪台计算机是 Windows 中的域控制器?

    我正在寻找一种方法来确定客户端计算机连接到的给定域的域控制器的名称 IP 地址 在我们公司 我们有很多用于测试的小型网络 其中大多数都有自己的小域 作为示例 其中一个域被命名为 TESTLAB 我有一个 Windows XP 工作站 它是
  • 如何获得浮动:右键垂直居中对齐

    我只是无法获得课程按钮align right垂直居中对齐 HTML div class panel footer span style width 100 class header footer item span div
  • 参数依赖查找是否也只搜索名称空间或类?

    我一直在阅读 Josuttis 模板书 并且一直在尝试了解 ADL 他说 ADL 通过在与调用参数类型 关联 的命名空间和类中查找名称来进行 我只是想看看在班级中查找名字是如何工作的 我在下面举了一个测试的例子 我看到它如何在命名空间中查找
  • 在 PHP 5 中使用 Schematron 验证 XML

    我在验证 XML 时遇到问题图解器 http en wikipedia org wiki Schematron 在我的代码中 我将 XML 和 XSL 作为 DOMDocument 对象加载 并尝试进行转换 domSche new DOMD
  • 无法在 Jupyter Notebook 中安装 arcpy

    我安装了 ArcGIS Pro 其中包括已安装的 Python 包 我正在尝试学习 Python 并且想使用 ArcPy 函数 我以前从未使用过 Jupyter Notebook 但为了开始使用 我创建了一个新的 Python 3 文件 我
  • 每秒打印一些东西,并且在 Perl 6 中使用 React 每 5 秒睡眠 10 秒?

    我想每秒打印当前时间 并且还想每5秒睡眠10秒 react whenever Supply interval 1 say DateTime now posix whenever Supply interval 5 sleep 10 say