понедельник, 21 января 2013 г.

Scala Future. Примеры асинхронного программирования

Не так давно я начал изучения языка scala. Пока язык оставляет очень хорошие впечатления, а его полная совместимость с java позволяет разрабатывать софт аналогичной (с java) функциональности.
Сегодня я хочу показать как можно работать с асинхронными вычислениями в 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)
}

Комментариев нет:

Отправить комментарий