Как отладить rxjs5?

В RxJS - Цели Я читал, что их цель - лучше отлаживать:

Цель

Предоставить больше отлаживаемых стеков вызовов, чем предыдущие версии RxJS

Я только начал использовать redux-observable, что для меня стало проще понять, сравнивая его с redux-saga, поскольку я уже привык к реактивному стилю с lodash и ramda (ok, fp style maybe;). Я был удивлен, что его еще не удалось отладить. Это правда? Если да, то я должен перейти на redux-saga, возможно, или придерживаться redux-thunk.

Редактировать на основе ответа Джей Фелпса

Отладкой я имел в виду: "Как установить точку останова, например, observable.map(...) в браузере?" С помощью lodash я могу установить точку останова в браузере, и она останавливается прямо на _.map(...). Как это сделать с помощью redux-observable (или rxjs)? Я не хочу зависеть от рисования мраморных диаграмм и console.log().

Ответ 1

Конечно, можно отлаживать код RxJS. Я думаю, что, вероятно, можно с уверенностью сказать, что вряд ли кто-нибудь его будет использовать, если это не так - Angular2 также сильно построен на нем.

Наиболее распространенные способы использования пользователями - это то же самое, что они отлаживают другой JavaScript, точки останова (например, отладчик) и console.log()

Существуют более продвинутые методы, которые некоторые пользователи используют, например, графики зависимостей графики или мраморные диаграммы. Андре Сталц писал об этом, так что это может быть полезным ресурсом.

В конечном счете, любое асинхронное программирование будет сложнее отлаживать. Это не единственно для редукционно-наблюдаемых/RxJS; быстрый поиск покажет много проблем отладки для саги о редукции.

Оказывается, что redux-thunk - лучшее решение для подавляющего большинства приложений, построенных потому, что большинство из них не имеют сложных побочных эффектов, которые оправдывают что-то вроде redux-наблюдаемой или редукционной саги. Хотя, если вы уже владеете RxJS, нет ничего плохого в использовании сокращаемого вида.

redux-saga, поскольку проект существовал дольше, чем сокращающийся, так что, безусловно, один из основных пунктов продажи. Вы найдете больше документации, примеров и, вероятно, получите лучшее сообщество, чтобы получить поддержку.

Счётчик, заключающийся в том, что операторы и API, которые вы изучаете в саунд-релизе, не так переносимы, как обучение RxJS, которое используется повсеместно. redux-observable супер супер супер простой внутри, это действительно просто дает вам естественный способ использовать RxJS. Поэтому, если вы знаете RxJS (или хотите), это очень естественная подгонка.

Мой совет на данный момент для большинства людей заключается в том, что если вам нужно спросить, какой из них вы должны использовать, вы, вероятно, должны выбрать саму саму саму.

(отказ от ответственности: я являюсь одним из тех, кто поддерживает редукцию и RxJS v5)

Ответ 2

import Rx, { Observable } from 'rxjs'

const arrStream$ = Observable.of(1,2,3)
                    .do(x=>console.log('Before',x))  // 1, 2, 3
                    .map(x=>x*2)
                    .do(x=>console.log('After',x))   // 2, 4, 6
                    .subscribe(value=>doThingsWith(value))
// real console output
// Before 1
// After  2
// doThingsWith(2)
// Before 2
// After  4
// doThingsWith(4)
// Before 3
// After  6
// doThingsWith(6)

.do(debugValue = > console.log(debugValue))