如何在rxjs中返回一个空的observable
函数more()
应该从get请求中返回一个Observable
export class Collection{ public more = (): Observable<Response> => { if (this.hasMore()) { return this.fetch(); } else{ // return empty observable } } private fetch = (): Observable<Response> => { return this.http.get('some-url').map( (res) => { return res.json(); } ); } }
在这种情况下,我只能做一个请求,如果hasMore()
是真的,否则我得到一个错误的subscribe()
函数subscribe is not defined
,我怎样才能返回一个空的可观察?
this.collection.more().subscribe( (res) =>{ console.log(res); }, (err) =>{ console.log(err); } )
对于打字稿,你可以像下面这样指定你的空观察值的通用参数:
Observable.empty<Response>();
是的, 有空运营商
Rx.Observable.empty();
对于打字稿,您可以使用:
Rx.Observable<Response>.from([])
对于Angular2和rxjs来说,它适用于:
import {EmptyObservable} from 'rxjs/observable/EmptyObservable'; ... return new EmptyObservable(); ...
例如,您可以返回Observable.of(empty_variable)
Observable.of(''); // or Observable.of({}); // etc
或者你也可以尝试ignoreElements()
尝试这个
export class Collection{ public more (): Observable<Response> { if (this.hasMore()) { return this.fetch(); } else{ return this.returnEmpty(); } } public returnEmpty(): any { let subscription = source.subscribe( function (x) { console.log('Next: %s', x); }, function (err) { console.log('Error: %s', err); }, function () { console.log('Completed'); }); } } let source = Observable.empty();