2015-12-17 3 views
2

В RxJava существует оператор Observable.toBlocking() для синхронного извлечения данных наблюдаемого. Я не могу найти аналогичного оператора для RxJS. Я хочу использовать этот оператор, чтобы улучшить свой код с Rx и без использования другой функциональной библиотеки программирования ...RxJS - toBlocking оператор

ответ

1

см schedulers

Если вы не предоставите планировщик, RxJS подберет планировщик по умолчанию с помощью используя принцип наименьшего параллелизма. Это означает, что выбран планировщик, который вводит наименьшее количество параллелизма, удовлетворяющего потребностям оператора.

Пока вы не указали планировщик RxJS сам выбирает блокирующий планировщик/решает синхронно (immediate scheduler), как вы можете видеть в этом jsbin наблюдаемой - первых наблюдаемых Завершает перед началом второго.

Если вы хотите явно контролировать уровень параллелизма, вы можете сделать это, передав конкретный планировщик оператору, который поддерживает эту опцию.

+0

Но мне все же пришлось использовать .subscribe вместо результата, как в случае с RxJava ... :( –

+0

Gotcha. Я не знаю ни одного такого оператора для RxJS, но (игнорируя достоинство этого) было бы легко достаточно, чтобы реализовать - пока вы имеете дело с чисто синхронными/немедленно запланированными наблюдаемыми (см. [jsbin] (http://jsbin.com/fuvakajoba/edit?js, консоль)). Для асинхронного наблюдения это будет плохо Идея сделать это [в любом случае] (http://stackoverflow.com/questions/23231909/collect-rxjs-observable-to-array) –

+0

Я бы предложил против этого сделать (например, это будет нарушено, если явно не будет введена асинхронность) –

Смежные вопросы