Сегодня я хочу показать как можно работать с асинхронными вычислениями в scala. Приведу лишь ознакомительную информацию, полную информацию можно посмотреть в документации.
Примеры будет использовать Future - своего рода временное значение объекта, который вы можете создать для результата, которого еще не существует. Вообще future используется для выполнения параллельных задач в асинхронном неблокирующем стиле. Подключите future в свой проект
import scala.concurrent.future
Использовать данный механизм очень просто:
val f = future{
//ваша функция
}
Поскольку вычисления происходят в асинхронном режиме, мы должны определитьCallback-функции для обработки результатов. На выбор у нас три функции: onComplete (вызывается при завершении вычислений), onSuccess (если вычисления были успешны), onFailure (если при вычислениях произошла ошибка).
Ну и приведу пример использования данных функций:
f onComplete {
case Right(posts) => for (post <- posts) render(post) //вызывается в случаи успеха
case Left(t) => render("An error has occured: " + t.getMessage) //вызывается при ошибке
}
f onFailure {
case t => render("An error has occured: " + t.getMessage)
}
f onSuccess {
case posts => for (post <- posts) render(post)
}
Комментариев нет:
Отправить комментарий