Service 订阅后返回json格式的数据
我正在使用Angular 5,并希望在订阅服务后以json格式从函数GetDionareaResults返回数据Service 订阅后返回json格式的数据,service,promise,return,angular5,observers,Service,Promise,Return,Angular5,Observers,我正在使用Angular 5,并希望在订阅服务后以json格式从函数GetDionareaResults返回数据 getDionaeaResults(sql) : any { this.dionaeaService.getDionaeaConnectionLogs(sql).subscribe(res => { this.data = res; }), (error: any) => {
getDionaeaResults(sql) : any {
this.dionaeaService.getDionaeaConnectionLogs(sql).subscribe(res => {
this.data = res;
}),
(error: any) => {
console.log(error);
});
return this.data;
}
调用此函数后,this.totalAttacks
打印未定义的
getTotalAttack() {
this.totalAttacks = this.getDionaeaResults("some query")
console.log(this.totalAttacks,'attacks')
}
this.getDionareaResults
正在返回undefined
,因为您调用的服务是异步的,您必须等待subscribe回调。因为可观察对象是异步调用
this.data=res
可能在return语句之后执行。您可以直接在getTotalAtack()
函数中调用dionaeaService
,如下所示:
getTotalAttack(sql){
this.dionaeaService.getDionaeaConnectionLogs(sql).subscribe(res => {
this.totalAttacks = res;
}),
(error: any) => {
console.log(error);
});
}
this.getDionareaResults
正在返回undefined
,因为您调用的服务是异步的,您必须等待subscribe回调。因为可观察对象是异步调用
this.data=res
可能在return语句之后执行。您可以直接在getTotalAtack()
函数中调用dionaeaService
,如下所示:
getTotalAttack(sql){
this.dionaeaService.getDionaeaConnectionLogs(sql).subscribe(res => {
this.totalAttacks = res;
}),
(error: any) => {
console.log(error);
});
}
建议使用Obseravable.map()函数
getDionaeaResults(sql) : Observable<any> {
return this.dionaeaService
.getDionaeaConnectionLogs(sql)
.map(res => res);
}
getTotalAttack(sql){
this.getDionaeaResults("some query")
.subscribe(
res => { this.totalAttacks = res; },
err => { console.log(err); }
);
}
GetDionareaResults(sql):可观察{
退回这个。DionaAservice
.getDionaeaConnectionLogs(sql)
.map(res=>res);
}
getTotalAttack(sql){
this.getDionareaResults(“一些查询”)
.订阅(
res=>{this.totalAttacks=res;},
err=>{console.log(err);}
);
}
建议使用Obseravable.map()函数
getDionaeaResults(sql) : Observable<any> {
return this.dionaeaService
.getDionaeaConnectionLogs(sql)
.map(res => res);
}
getTotalAttack(sql){
this.getDionaeaResults("some query")
.subscribe(
res => { this.totalAttacks = res; },
err => { console.log(err); }
);
}
GetDionareaResults(sql):可观察{
退回这个。DionaAservice
.getDionaeaConnectionLogs(sql)
.map(res=>res);
}
getTotalAttack(sql){
this.getDionareaResults(“一些查询”)
.订阅(
res=>{this.totalAttacks=res;},
err=>{console.log(err);}
);
}
我使用this.getDionaeaResults
函数作为通用函数,它可以通过传递sql查询从任何函数调用,并将得到json格式的结果,另外我在subscribe调用后返回this.getDionaResults
中的数据。我使用this.getDionaResults
函数作为通用函数,它可以通过传递SQLQuerry从任何函数调用,并将以json格式获得结果,另外,在subscribe调用之后,我将在this.getDionareaResults
中返回数据。