【发布时间】:2019-10-09 08:57:04
【问题描述】:
我想在 angular7 中运行下一个函数之前从 API 接收数据
'data.service.ts
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http'
@Injectable({
providedIn: 'root'
})
export class DataService {
constructor(private http: HttpClient) { }
public url = 'https://reqres.in/api/users'
async getData() {
await this.http.get(this.url)
.toPromise()
.then(
res => {return res}
)
}
}
app.component.ts
public users
constructor(private dataservice: DataService) {}
ngOnInit() {
this.users = this.dataservice.getData()
console.log(this.users)
next_function()
....
实际打印输出: ZoneAwarePromise {__zone_symbol__state: null, __zone_symbol__value: Array(0)} __zone_symbol__state: true
预期打印输出: 收到的json对象
我想在将数据显示为 html 之前运行一些函数来处理数据,所以我需要在类中加载数据。
编辑: 除了把 next_function 放在 getDATA() 里面还有其他方法吗?
【问题讨论】:
-
使函数异步只是意味着它总是返回一个promise,你可以在其中使用await。它不会神奇地让它的调用者同步接收值,他们仍然必须解决承诺。
标签: angular asynchronous httpclient angular-promise