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
});
所以我想 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
});