我有一个用户界面并向用户提供一个按钮,该按钮执行功能longComputation(x: A): A
,然后用新结果更新用户界面(尤其是模型)。此函数可能需要更长的时间来计算结果,因此应该并行计算。
Diode为我提供了Effect
,PotAction
和AsyncAction
。我阅读了有关Effects和PotActions/AsyncActions的文档,但是我什至没有一个简单的示例可以工作。
有人可以指出我的意思或提供一个简单的工作示例吗?
我基于SimpleCounter
示例创建了一个ScalaFiddle。有一个LongComputation
按钮,应并行运行;但不是。
答案 0 :(得分:2)
在JavaScript中,如果不使用Web Workers,则无法并行运行事物,因为JS引擎是单线程的。 Web Workers比线程更像是单独的进程,因为它们不共享内存,并且您需要发送消息以在Worker和主线程之间进行通信。
答案 1 :(得分:0)
要发表评论的声誉不到50,所以我必须创建一个新答案,而不是对@ochrons答案发表评论:
如上所述,Web Workers通过消息传递进行通信,并且不共享任何状态。这个概念在某种程度上类似于Akka-甚至存在Akka.js,使您可以在ScalaJS中使用actor系统,从而在浏览器中使用。