Я вставив запись в MongoDB:Wrap асинхронный код в блокирующий вызов
val observable: Observable[Completed] = collection.insertOne(doc)
observable.subscribe(new Observer[Completed] {
override def onNext(result: Completed): Unit = { println("Inserted"); }
override def onError(e: Throwable): Unit = { println(" \n\nFailed " + e + "\n\n"); fail() }
override def onComplete(): Unit = { println("Completed"); }
})
тест проходит, даже несмотря на то, onError
обратного вызова. Это связано с тем, что insertOne
является асинхронным методом, и тест завершается до вызова onError
. Я хотел бы обернуть метод insertOne в блокирующий вызов, поэтому subscribe
не вызывается до тех пор, пока не будет установлено значение observable
.
Есть ли идиоматический способ достижения этого в Scala?
Вы можете посмотреть на [ReactiveMongo] (http://reactivemongo.org/) – cchantep