在服务调用之外获取数据
Get data outside of a service call
我正在使用获取数据的服务,我将在我的组件中使用它。
ngOnInit() {
this.EJnames= this.dataservice.getResults();
this.generalinfosservice.getResults("nothing").then(data=>{this.datas=data; console.log(data)});
console.log(this.datas);
}
在我的 getResult()
函数中,我有一个用于 Promise 获取所有数据的方法。
post( url, mockUrl, body) {
if( environment.mocked ) {
return this.httpClient.get( mockUrl ).toPromise().then( data => { return data} );
} else {
return this.httpClient.post( url, JSON.stringify( body ) )
.toPromise()
.then( data => {
return data;
}, ( err: any ) => {
return this.handleError( err.message );
} );
}
}
第一个 console.log(data)
正在返回我的数据
但是 console.log(this.data)
返回一个空数组。
我如何将数据传递给 this.data
或者我应该将我的代码放在 then
"function" 中?
处理数据等需要做的任何事情都需要在 then
函数中进行。 getResults
方法是异步的,并且 then
方法将在以后的某个时间处理,当承诺 resolve 时。当 getResults
方法中的代码 returns 时,它将继续执行 ngOnInit
方法中的其余代码。在进入下一行之前,它不会等待执行您的承诺链的其余部分。
你基本上已经回答了你自己的问题。
.then( 数据 => { return 数据; })
将return数据发送给事件调度程序。这不会设置 this.data = data;
所以解决方案是将其更改为:
.then( data => {
this.data = data;
})
我正在使用获取数据的服务,我将在我的组件中使用它。
ngOnInit() {
this.EJnames= this.dataservice.getResults();
this.generalinfosservice.getResults("nothing").then(data=>{this.datas=data; console.log(data)});
console.log(this.datas);
}
在我的 getResult()
函数中,我有一个用于 Promise 获取所有数据的方法。
post( url, mockUrl, body) {
if( environment.mocked ) {
return this.httpClient.get( mockUrl ).toPromise().then( data => { return data} );
} else {
return this.httpClient.post( url, JSON.stringify( body ) )
.toPromise()
.then( data => {
return data;
}, ( err: any ) => {
return this.handleError( err.message );
} );
}
}
第一个 console.log(data)
正在返回我的数据
但是 console.log(this.data)
返回一个空数组。
我如何将数据传递给 this.data
或者我应该将我的代码放在 then
"function" 中?
处理数据等需要做的任何事情都需要在 then
函数中进行。 getResults
方法是异步的,并且 then
方法将在以后的某个时间处理,当承诺 resolve 时。当 getResults
方法中的代码 returns 时,它将继续执行 ngOnInit
方法中的其余代码。在进入下一行之前,它不会等待执行您的承诺链的其余部分。
你基本上已经回答了你自己的问题。 .then( 数据 => { return 数据; })
将return数据发送给事件调度程序。这不会设置 this.data = data;
所以解决方案是将其更改为:
.then( data => {
this.data = data;
})