Показать сообщение отдельно
  #21 (permalink)  
Старый 11.01.2015, 00:29
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Цитата:
А ты уверен в терминологии?
Дык, никто не мешает в await скормить массив задач, которые будут работать параллельно (ну во всяком случае такое оч легко сделать), но наверн ты прав, это ближе к промисам, но промисы которые done right

Вообще я взял термин из Java

http://doc.akka.io/docs/akka/2.0/java/futures.html

Future<Integer> f2 = f1.map(new Mapper<String, Integer>() {
  public Integer apply(String s) {
    return s.length();
  }
});
 
int result = Await.result(f2, Duration.create(1, SECONDS));


А вот C#

public async void Foo() {
    int length = await ExampleMethodAsync();
}


***

Главное отличие от промисов в том, что мы избавляемся от ненужных функций и можем использовать try-catch.

Цитата:
await всегда ждет promise, сам yield не обладает никакой асинхронностью, это просто точка выхода, тут опять все завязано на промисах
Это всё понятно, но yield позволяет создать прерывание в текущем контексте, что гораздо удобнее промисов на колбеках. Похожий принцип я использовал в Collection, для реализации потоков http://jsfiddle.net/kobezzza/hut2jhL9/
__________________
kobezzza
code monkey

Последний раз редактировалось kobezzza, 11.01.2015 в 00:42.
Ответить с цитированием