如何在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();