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