метод subscribe возвращает неопределенное значение в ionic

#angular #ionic-framework #rxjs #ionic4

#angular #ionic-framework #rxjs #ionic4

Вопрос:

Метод в моем классе webservice возвращает data, но когда я пытаюсь получить доступ к данным с помощью метода .subscribe в моем компоненте, он возвращает undefined.

Код метода в моем классе обслуживания. Я получаю данные в этом методе. И я могу видеть это с помощью console.log.

 getData() {
return this.networkService
  .getRequest("clienti/v1/session")
  .pipe(
    map(
      (data) => {
        console.log("getData");
        console.log(JSON.stringify(data));
       
          return data;
        }
      },
      (error) => {
        console.log("getData error");
        console.log(error);
      }
    )
  );
 }
  

Код в моем классе component, я получаю неопределенное значение здесь, в console.log:

 recoverData() {

this.dataService.getData().subscribe(
  (data) => {
    console.log("data");
    console.log(data);
  },
  (error) => {
    console.log(error);
  }
);
}

       
  

Если кто-то знает, в чем проблема, пожалуйста, дайте мне знать.

Ответ №1:

Если вы не используете map оператор для преобразования уведомления, вы могли бы использовать tap operator вместо этого. Он также принимает обратный вызов с ошибкой, как вы пытаетесь сделать. Напротив, map оператор не принимает функцию обратного вызова ошибки, поэтому журналы ошибок не будут распечатаны.

Попробуйте следующее

 getData() {
  return this.networkService.getRequest("clienti/v1/session").pipe(
    tap(
      (data) => {
        console.log("getData");
        console.log(JSON.stringify(data));
      },
      (error) => {
        console.log("getData error");
        console.log(error);
      }
    )
  );
}
  

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