Асинхронные вычисления в scalajs Diode - PullRequest
0 голосов
/ 04 декабря 2018

У меня есть пользовательский интерфейс и я предоставляю пользователю кнопку, которая выполняет функцию longComputation(x: A): A и обновляет пользовательский интерфейс (в частности, модель) с новым результатом.Эта функция может занять больше времени для вычисления результата и поэтому должна вычисляться параллельно.

Диод предоставляет мне Effect, PotAction и AsyncAction.Я прочитал документацию о Эффектах и PotActions / AsyncActions , но я даже не могу заставить работать простой пример.

Может кто-нибудь указать мне или предоставить простую работупример?

Я создал ScalaFiddle на основе примера SimpleCounter.Есть кнопка LongComputation, которая должна работать параллельно;но это не так.

Ответы [ 2 ]

0 голосов
/ 25 декабря 2018

Имеет менее 50 репутаций, чтобы комментировать, поэтому я должен создать новый ответ вместо комментирования @ochrons answer:

Как уже упоминалось, веб-работники общаются через передачу сообщений и не делятся никаким состоянием.Эта концепция чем-то похожа на Akka - даже Akka.js существует, что позволяет вам использовать системы акторов в ScalaJS и, следовательно, браузер.

0 голосов
/ 06 декабря 2018

В JavaScript вы не можете запускать вещи параллельно без использования Web Workers , потому что механизм JS является однопоточным.Веб-работники больше похожи на отдельные процессы, чем на потоки, так как они не разделяют память, и вам нужно отправлять сообщения для связи между работниками и основным потоком.

...