Я смотрел какой-то проект Scala с открытым исходным кодом. и я увидел, что некоторые из них делают что-то вроде:Идиоматический способ блокировки асинхронных операций
abstract class Foo{
def create(implicit ex: ExecutionContextExecutor): Seq[ResultSet] = {
Await.result(createAsync(), timeout)
}
def createAsync()(implicit ex: ExecutionContextExecutor): Future[Seq[ResultSet]] = //implementation
... more like those
}
есть ли какой-либо преимущество/недостаток для вызова каждого метода с
(неявным например: ExecutionContextExecutor) параметра, а не передавая ExecutionContextExecutor в класс:
abstract class Foo(implicit ex: ExecutionContextExecutor){
def create(timeout: FiniteDuration): Seq[ResultSet] = {
Await.result(createAsync(), timeout)
}
def createAsync(): Future[Seq[ResultSet]] = //implementation
... more like those
}
Есть ли предпочтительный вариант?
Можете изменить название? Это реальный вопрос, который принесет пользу новичкам на языке, но я пришел сюда, потому что название читалось так, как будто это было бы прежде всего частью мнения. Или я просто слишком много читаю, потому что я здесь слишком долго ...? – wheaties
@wheaties, что вы предлагаете? – igx
Не знаю, «Должен ли ExecutionContext быть на методе или объекте?» также звучит очень упрямо. «Выгода ExecutionContext для метода против объекта?» Gah ... – wheaties