rxjs 5.5.2中的Observable.throw替换

dra*_*fly 34 rxjs angular

我正在迁移rxjs@5.5.2并使用lettable运算符......我还更新了Observable静态方法.我想知道什么是对应的Observable.throwimport 'rxjs/add/observable/throw';.

我应该导入丑陋_throw吗?

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

或者有更好的方法.老实说,我喜欢静态方法Observable,现在看来,像所有的静态创建方法of,from应该从进口rxjs/observable/<methodName>

Jay*_*ase 33

我仍然在5.5左右,但它看起来像现在而不是导入throw使用ErrorObservable.

// import { _throw } from 'rxjs/observable/throw';
import { ErrorObservable } from 'rxjs/observable/ErrorObservable';

ErrorObservable.create('error');
Run Code Online (Sandbox Code Playgroud)

从本指南看,它必须是_throw以避免关键字冲突(视频的其余部分适合5.5入门)


ble*_*her 29

继续Mick的回答,在rxjs版本6中_throw被替换为throwError

 import {Observable, throwError} from 'rxjs'; 
Run Code Online (Sandbox Code Playgroud)

RxJS迁移指南

  • 是的但谷歌给它作为6.xx的答案我跳过了最新的5.xx直到6.很多人(像我一样)甚至不知道_throw功能. (2认同)

Mic*_*ick 12

是的_throw是正确的(这将完成JayChase所写的,但代码更少).你做同样的事情of:

import {of} from 'rxjs/observable/of';
import {_throw} from 'rxjs/observable/throw';

// ...
   // ...
   if (result) {
       return of(result as T);
   } else {
       return _throw('error');
   }
}
Run Code Online (Sandbox Code Playgroud)

  • 在版本 6 中,_throw 现在导出为 throwError : import {Observable, throwError} from 'rxjs'; (2认同)

小智 5

对于 Angular 5 及更高版本:

import{Http} from '@angular/http';
import {HttpClient,HttpResponse,HttpErrorResponse  } from '@angular/common/http';
import { Injectable} from '@angular/core'
import {Employee} from './employee';

import { Observable,throwError } from 'rxjs';
import { map,catchError } from 'rxjs/operators';  


@Injectable() 
export class employeeService{
constructor(private _http:Http){  }
 getEmployees():Observable<Employee[]>{
    return this._http.get('YOUR URL')
                     .pipe(
                         map((res: Response) => res.json()),
                         catchError(this.handleError)
                        );
                     //.pipe(catchError(this.handleError));
 }
 handleError(error:HttpErrorResponse){
    console.log(error);
    return throwError(error.message);
 }    
}
Run Code Online (Sandbox Code Playgroud)