как отменить и немедленно разрешить подписку в rxjs?

Новое в rxjs и angular2. Как прервать http-вызов и вернуть наблюдаемое, чтобы не получить ошибку в конце подписки? конечно, если я просто верну сюда объект, мы получим .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);
}

person FlavorScape    schedule 05.12.2016    source источник
comment
Контекст для этого кода не ясен. Возможно, это должно быть return Observable.of(queryObject). Что касается отмены запроса, см. этот stackoverflow.com/questions/36490926/   -  person Estus Flask    schedule 05.12.2016


Ответы (1)


Насколько я понимаю вашу ситуацию, вы хотите вернуть Observable, даже если this.abortSearches равно true, и поэтому вы не хотите делать какой-либо фактический HTTP-запрос. Однако у вас есть некоторые другие функции, связанные с этим методом, поэтому вы хотите, чтобы он всегда возвращал Observable.

Вы можете вернуть Observable.empty(), который Observable, который не выдает никаких значений, а просто сигнализирует о завершении.

person martin    schedule 05.12.2016