Выполнение Monix Task параллельно - PullRequest
1 голос
/ 18 марта 2020

Каков наилучший способ запустить несколько задач Monix параллельно, а затем получить один результат?
У меня есть следующие задачи и я хочу получить ResultClass.

import monix.eval.Task

val a: Task[A]
val b: Task[B]
val c: Task[C]

case class ResultClass(a:A, b:B, c:C)

Официальная документация имеет только какой-то способ параллельного выполнения для задач того же типа.
Есть ли хороший способ выполнить параллельно для разных типов задач?
Спасибо.

1 Ответ

3 голосов
/ 18 марта 2020

Monix Task имеет такие методы, как parMap2, parMap3, parMap4 до 6. Вы можете использовать его следующим образом:

case class ResultClass(a:Int, b:String, c:Boolean)

val a: Task[Int] = Task.pure(1)
val b: Task[String] = Task.pure("Test")
val c: Task[Boolean] = Task.pure(true)

val r: Task[ResultClass] = Task.parMap3(a,b,c)(ResultClass.apply)
...