如何在rxjs中立即取消并“解决”订阅?

3

我刚开始学习rxjs和angular2,如何中止一个http请求并返回一个observable,以便在订阅端不会出现错误?当然,如果我只是返回一个对象,我们会得到.searchAlbum(...).subscribe is not a function的错误。

public searchAlbum (term:string, queryObject?:any) {

    if( this.abortSearches){
      queryObject.body = null;
      return //what to return here? used to be deferred.resolve(queryObject);
    }

    ...

    return this.http.request( new Request( options ) )
        .map(res => this.extractData(res, queryObject) )
        .catch(this.handleError);
}

1
这段代码的上下文不太清楚。可能应该是 return Observable.of(queryObject)。至于请求取消,请参见此链接:https://dev59.com/w1oV5IYBdhLWcg3wPs0Y - Estus Flask
1个回答

2
据我所理解,您希望即使this.abortSearchestrue且因此不想进行任何实际的HTTP请求,仍然返回一个Observable。但是,您的一些其他功能与此方法相关联,因此您希望它始终返回一个Observable。
您可以返回Observable.empty(),这是一个不发出任何值并只发出完成信号的Observable。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接