Redux DevTools заставляет RXJS switchMap вести себя по-другому. Зачем? - PullRequest
0 голосов
/ 15 ноября 2018

Я работаю над приложением Angular 7, используя магазин NGRX.Я установил Redux DevTools в своем браузере Chrome, чтобы использовать его во время разработки.

Я был более чем озадачен, когда заметил, что функция ведет себя по-разному, в зависимости от того, включен ли Redux DevTools в браузере .В одном случае я получал ошибку, а в другом - все работало нормально.

Точная ошибка:

TypeError: You provided an invalid object where a stream was expected. 
You can provide an Observable, Promise, Array, or Iterable 

К счастью, я нашел корень проблемы в этом ответе - я неправильно импортировал switchMap из-за автоматического WebStormimport:

import { switchMap } from 'rxjs/internal/operators';

вместо

import { switchMap } from 'rxjs/operators';

Однако я до сих пор не могу понять, что Redux DevTools имеет к нему отношение и почему мой код работал так, как будто я импортировал switchMap правильно, когда инструмент был включен, и наоборот - он вызывал ошибку (как это обычно и следовало делать), когда он был отключен.

Я сомневаюсь, что этот код будет очень полезен здесь, но это тот, где произошла фактическая ошибка.

return this._http
            .post(url, body, { headers })
            .pipe(
                // This switch map and the throwError function were causing the error.
                switchMap((response: any) => {
                    // Please, do ignore the logic itself. There's a reason behind it.
                    const { data } = response;
                    return !!data ? of(data) : throwError('Invalid arguments');
                })
            );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...