Return 来自 Ionic 订阅的价值

Return value from subscribe in Ionic

所以我想 return 来自这样的订阅函数的值:

async obtenerListadoClases(categoria) {

  var clasesDB = await this.getClases(categoria)
      .subscribe((data: any) => {
         clasesDB = data.clasesDB // **Want to return this**
         console.log(clasesDB,'clasesDB'); // **Getting Value**
      })

      console.log(clasesDB, 'outside'); // **Not Getting Value**
      return clasesDB;
  }

另外,我想在另一个地方使用这个功能,比如:

 var listaClases = await this.claseServicio.obtenerListadoClases(categoria); // Not getting the correct info
  //  console.log(listaClases , 'listado clases');

我做错了什么?或者我该如何解决?提前致谢!

您应该在 .subscribe() 中使用 promises。只有 observables 使用 .subcribe()

此外,远离 angular 世界中的承诺。是时候思考反应了。

这是返回一个可观察的吗? this.getClases(categoria) post 请提供代码。

您只能订阅 observables

Observable 方式

getClases(categoria): Observable<any> {
  return new Observable(observer => {
    // logic to return data
    observer.next(data);
    observer.complete()
    // logic when error
    observer.error(error);
  });
}

Return getClases() 函数

obtenerListadoClases(categoria): Observable<any>{
  return this.getClases(categoria);
}

在需要的地方使用函数:

this.obtenerListadoClases(categoria)
 .subscribe(
   result => {
     // what you want to do with the result
   },
   error => {
     // what you want to do with the error
   }); 

无极之道

getClases(categoria): Promise<any> {
  return new Promise((resolve, reject) => {
    // logic to return data
    resolve(data);
    // logic when error
    reject(error);
  });
}

Return getClases() 函数

obtenerListadoClases(categoria): Promise<any>{
  return this.getClases(categoria);
}

在需要的地方使用函数:

this.obtenerListadoClases(categoria)
 .then(result => {
   // what you want to do with the result
 })
 .catch(error => {
   // what you want to do with the error
 });