scalajs二极管中的异步计算

时间:2018-12-04 10:18:38

标签: scala.js diode

我有一个用户界面并向用户提供一个按钮,该按钮执行功能longComputation(x: A): A,然后用新结果更新用户界面(尤其是模型)。此函数可能需要更长的时间来计算结果,因此应该并行计算。

Diode为我提供了EffectPotActionAsyncAction。我阅读了有关EffectsPotActions/AsyncActions的文档,但是我什至没有一个简单的示例可以工作。

有人可以指出我的意思或提供一个简单的工作示例吗?

我基于SimpleCounter示例创建了一个ScalaFiddle。有一个LongComputation按钮,应并行运行;但不是。

2 个答案:

答案 0 :(得分:2)

在JavaScript中,如果不使用Web Workers,则无法并行运行事物,因为JS引擎是单线程的。 Web Workers比线程更像是单独的进程,因为它们不共享内存,并且您需要发送消息以在Worker和主线程之间进行通信。

答案 1 :(得分:0)

要发表评论的声誉不到50,所以我必须创建一个新答案,而不是对@ochrons答案发表评论:

如上所述,Web Workers通过消息传递进行通信,并且不共享任何状态。这个概念在某种程度上类似于Akka-甚至存在Akka.js,使您可以在ScalaJS中使用actor系统,从而在浏览器中使用。