Вернуть наблюдаемое из вложенного наблюдаемого

Я пытаюсь вернуть логическое наблюдаемое из ответа, который я получаю от наблюдаемого, который находится внутри ответа от родительского наблюдаемого. Но дочерний наблюдаемый объект не всегда будет работать в зависимости от разрешения родительского наблюдаемого объекта.

Я знаю, что для этой работы мне нужно использовать .map, и я могу вернуть наблюдаемое в подписке, но после этого я в тупике.

сценарий заключается в том, что я выполняю проверку подлинности, если она проходит, а затем выполняю вызов API, если он не возвращает false. Если вызов API не удался, верните false, а если он увенчается успехом, верните true.

    getEvents(): Observable<boolean> {
       this.authSrvc.authCheck().map((res: boolean) => {
          if (res) {
                this.eventsSrvc.getEvents(this.pageNum, this.pageSize, this.searchText).timeout(15000).map((data: Response) => data.json()).subscribe((res:any)=>
                {
                    if(res.value.length === 0)
                    {
                        Observable.of(false);
                    }
                    else
                    {
this.eventsList = this.eventsList.concat(data);

                        this.storage.ready().then(() => {
                            this.storage.set('events', this.eventsList)
                        })
                        Observable.of(true);


                    }
                },(err:any)=>
                {

                    this.helperSrvc.errorMessage(err);
  return Observable.of(false);
                })
            }
            else {
this.helperSrvc.authFailed();
                this.authSrvc.logout();
                this.pushSrvc.unRegisterPush();
                this.calendarSrvc.clearEvents();
                this.locationSrvc.clearGeofences();
                this.navCtrl.setRoot(AuthPage);
                return Observable.of(false);
               // 
            }
        })
    }

Я либо не могу получить ответ, либо мне говорят, что функция, которая вызывает это, не имеет доступного .subscribe().


person Ross Rawlins    schedule 15.03.2017    source источник


Ответы (1)