订阅返回的离子值

问题描述 投票:0回答:2

所以我想从这样的订阅函数返回一个值:

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');

我在做什么错?或者我该如何解决?预先感谢!

return observable ionic4 subscribe
2个回答
0
投票

您应该在.subscribe()中使用诺言。仅可观察者使用.subcribe()

此外,请远离有角世界中的承诺。该思考一下反应了。

这是否可以观察到? this.getClases(categoria)请输入验证码。


0
投票

您只能订阅observables

可观察的方式

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

返回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
   }); 
© www.soinside.com 2019 - 2024. All rights reserved.