Как отладить rxjs5?
На RxJS - Цели я прочитал, что их цель - лучшая отладка:
цели
Обеспечить больше отлаживаемых стеков вызовов, чем в предыдущих версиях RxJS
Я только начал использовать redux-observable
что мне легче понять, сравнивая это с redux-saga
как я уже привык к реактивному стилю с lodash
а также ramda
(хорошо, стиль фп возможно;). Я был удивлен, что пока невозможно отладить его. Это правда? Если так, то я должен переключиться на redux-saga
Может быть, или придерживаться redux-thunk
,
Редактировать на основе ответа Джея Фелпса
Под отладкой я имел в виду: "Как установить точку останова, например, на observable.map(...)
в браузере? lodash
Я могу установить точку останова в браузере, и она останавливается прямо на _.map(...)
, Как это сделать с redux-observable
(или же rxjs
)? Я не хочу зависеть от рисования мраморных диаграмм и console.log()
,
2 ответа
Конечно, можно отлаживать код RxJS. Я думаю, что можно с уверенностью сказать, что вряд ли кто-то будет использовать его, если бы это было не так -Angular2 тоже сильно на нем построен.
Наиболее распространенные способы использования людьми - это те же способы отладки других JavaScript, точек останова (например, отладчик) и console.log()
Некоторые пользователи используют более продвинутые методы, такие как рисование графиков зависимостей или мраморных диаграмм. Андре Штальц недавно написал об этом, так что это может быть полезным ресурсом.
В конечном счете, любой вид асинхронного программирования будет сложнее отлаживать. Это не уникально для наблюдаемого редуксом /RxJS; быстрый поиск покажет множество проблем с отладкой и для redux-saga.
Оказывается, что redux-thunk является лучшим решением для подавляющего большинства приложений, созданных, потому что большинство из них не имеют сложных побочных эффектов, которые оправдывают что-то вроде redux-observable или redux-saga. Хотя, если вы уже хорошо знакомы с RxJS, нет ничего плохого в использовании redux-observable.
Редакция-сага как проект существует дольше, чем наблюдаемая редукса, так что это, безусловно, один из главных аргументов в пользу продажи. Вы найдете больше документации, примеров и, вероятно, получите лучшее сообщество, чтобы получить поддержку.
Суть в том, что операторы и API, которые вы изучаете в redux-saga, далеко не так переносимы, как обучение RxJS, которое используется повсеместно. Избыточный-наблюдаемый - супер-супер- супер- простой изнутри, он просто дает вам естественный способ использования RxJS. Так что, если вы знаете RxJS (или хотите), это очень естественно подходит.
На данный момент мой совет для большинства людей заключается в том, что если вам нужно спросить, какой из них вы должны использовать, вы, вероятно, должны выбрать redux-saga.
(отказ от ответственности: я являюсь одним из сопровождающих наблюдаемых в редуксе и RxJS v5)
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))