San*_*iac 6 promise async-await typescript angular
我想在构造函数或 ngOnInit() 中调用异步函数 readUsers()。虽然我从这里使用了推荐的 workaraound,但它仍然被延迟并且不会等待执行。
如何延迟/等待我的 readUsers() 函数的执行?
users: any[];
ngOnInit() {
this.readUsers();
//this.readUsers(); above is called delayed so this.users below is
//undefined
console.log(this.users);
}
public readUsers = async () => {
this.users = await this.userService.getUsers()
.then(resolve=>{
console.log("within async function");
return resolve;
})
.catch(reject=>{
return [];
})
}
////////userService.getUsers() reads JSON Object from an endpoint (works!)
getUsers(): Promise<any> {
return new Promise((resolve, reject) => {
this.http
.get('https://url.com/users/')
.subscribe(users => {
if (!users) {
reject([]);
}
resolve(users);
});
});
}
Run Code Online (Sandbox Code Playgroud)
由于没有等待,console.log 被切换:
不明确的
在异步函数中
interface OnInit {
ngOnInit(): void
}
Run Code Online (Sandbox Code Playgroud)
当某些东西返回空值时,您通常可以将其转换为 Promise 而没有任何副作用
async ngOnInit(): Promise<void> {
await this.readUsers();
console.log(this.users);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5997 次 |
| 最近记录: |