Насколько я понимаю, ниже приведены методы решения рабочих процессов асинхронного программирования:
- Обратные вызовы (CSP)
- Promises
Новые подходы:
- Rx.js Наблюдаемые (или mostjs, bacon.js, xstream и т.д.)
- Генераторы ES6
- Асинхронный /Await
Теперь мы переходим от обратных вызовов и promises к этим более новым подходам. В настоящее время я понимаю: Async/Await больше похожа на более чистую абстракцию поверх генераторов ES2015.
То, что я не могу понять, - это концептуальная разница между Observables и Generators. Я использовал и широко, и не испытывал никаких проблем с их использованием.
Что меня смущает, это пример использования Observables и Generators. Я пришел к выводу, что, в конце концов, они решают одну и ту же проблему - асинхронность. Только потенциальная разница, которую я вижу, - это генераторы, которые по сути обеспечивают императивную семантику кода, а Observables с использованием Rxjs, по-видимому, обеспечивают реактивную парадигму. Но так ли это?
Должны ли быть критерии выбора между Observable и Generator? Каковы плюсы и минусы.
Не хватает ли большой картины?
Также с Observable, в конечном счете, создающим в будущем Ecmascript, есть promises (с отменным маркером)/Наблюдаемые/Генераторы собираются конкурировать друг с другом?