获取服务电话之外的数据

时间:2018-03-13 20:25:53

标签: angular typescript angular-services

我正在使用获取数据的服务,我将在我的组件中使用它。

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“函数”?

2 个答案:

答案 0 :(得分:2)

处理数据等所需的任何事情都需要进入then功能。 getResults方法是异步的,then方法将在以后诺言结算时的某个时间处理。当代码从getResults方法返回时,它将继续执行ngOnInit方法中的其余代码。在进入下一行之前,它不会等待执行你的承诺链的其余部分。

答案 1 :(得分:0)

你基本上回答了自己的问题。 .then(data => {return data;})

将数据返回给事件调度程序。这不会设置this.data = data;

因此,解决方案是将其更改为:

   .then( data => {
      this.data = data;
   })