Как импортировать ErrorObservable или _throw в rxjs6? добавить rxjs

Я перехожу на rxjs 6.0.0-ucandoit-rc.6. В версии 5.5.2 я использовал ErrorObservable для создания наблюдаемого с ошибками.

Я использовал способ, рекомендованный здесь: https://github.com/ReactiveX/rxjs/blob/master/doc/pipeable-operators.md

Поскольку throw - ключевое слово, вы можете использовать _throw после импорта {_throw} из rxjs / observable / throw.

Однако этот способ больше не рекомендуется импортировать в rxjs6.

Как правильно импортировать _throw или ErrorObservable?


person Martin Nuc    schedule 13.04.2018    source источник


Ответы (1)


В RxJS версии 6 _throw был переименован в _ 2_ и должны быть импортированы следующим образом:

import { throwError } from "rxjs";

В качестве альтернативы вы можете установить rxjs-compat вместе с rxjs версией 6, чтобы продолжать использовать старую версию экспорта 5:

import { _throw } from "rxjs/observable/throw";

Дополнительную информацию см. В руководстве по миграции.

person cartant    schedule 13.04.2018
comment
import { _throw } from "rxjs/observable/throw"; не работает даже при импортированном rxjs-compat. - person eric99; 01.05.2018
comment
У меня он отлично работает с установленными rsjx и rxjs-compat версиями 6.0.0. Несомненно, у вас произошла какая-то ошибка. Он должен подсказать вам, что может быть не так. - person cartant; 01.05.2018
comment
Спасибо за быстрый ответ. Я играл с throw на этом StackBlitz и обновился до последней версии 6.0. .0 (также предлагается rxjs-compat), но он показывает страшные красные волнистые линии на 'rxjs / observable / throw'. Кажется, это артефакт StackBlitz, потому что, если я экспортирую его и устанавливаю npm, все выглядит нормально. - person eric99; 01.05.2018
comment
Я понимаю что ты имеешь ввиду. И ошибка не совсем применима. Раздражающий. - person cartant; 01.05.2018
comment
Мне было интересно, нужно ли что-то подправить в rxjs-compat. По крайней мере, это долгожданный шаг, учитывая отток синтаксиса rxjs за последние несколько выпусков. - person eric99; 03.05.2018
comment
Можно передать его с помощью import { Observable } from "rxjs"; const _throw = Observable.throw;, но тогда он не доволен вызовом (несмотря на наличие intellisense, противоречащего ошибке). - person eric99; 03.05.2018
comment
Даже если есть что-то странное с rxjs-compat, если это невозможно воспроизвести за пределами StackBlitz, я сомневаюсь, что проблема получит много внимания. Это определенно не то, что я хотел бы расследовать. - person cartant; 03.05.2018
comment
Это просто позор, потому что StackBlitz - один из немногих онлайн-бегунов, который быстро запускает тестовое приложение Angular, а зависимость между Angular и rxjs постоянно усиливается. - person eric99; 03.05.2018
comment
На самом деле, это не пустяк, поскольку _throw('my error') все еще работает. - person eric99; 03.05.2018
comment
Я думаю, что лучший способ использовать это, чтобы импортировать {throwError} из 'rxjs / internal / observable / throwError' - person Saturn K; 28.07.2018
comment
@Keyvan Абсолютно нет. Вы не должны импортировать из любого из internal расположений. Они не предназначены для публичного использования и могут быть изменены в любое время. - person cartant; 28.07.2018