在并发中§

有关 react,请参阅 上下文中的主要文档

react 关键字引入一个代码块,其中包含一个或多个 whenever 关键字来监视异步事件。供应块和反应块之间的主要区别在于反应块中的代码在其出现在代码流中的位置运行,而供应块必须在执行任何操作之前被点击。

另一个区别是供应块可以在没有 whenever 关键字的情况下使用,但反应块至少需要一个 whenever 才能真正使用。

react {
    whenever Supply.interval(2-> $v {
        say $v;
        done() if $v == 4;
    }
}

这里,whenever 关键字使用 .act 来创建对来自提供块的 Supply 的点击。当在其中一个点击中调用 done() 时,将退出 react 块。使用 last 退出块将产生一个错误,表明它实际上不是一个循环构造。

还可以从将依次发出的值列表中创建 on-demand Supply,因此第一个 on-demand 示例可以写成

react {
    whenever Supply.from-list(1..10-> $v {
        say $v;
    }
}