Angular 8 - 如何使用 Promises 和 Async/Await [重复]
Posted
技术标签:
【中文标题】Angular 8 - 如何使用 Promises 和 Async/Await [重复]【英文标题】:Angular 8 - How to use Promises and Async/Await [duplicate] 【发布时间】:2019-12-21 23:45:31 【问题描述】:我一直在尝试使用教程,但似乎无法弄清楚如何使用 Promises 或异步等待。
我有一个 http GET 请求,我想在返回之前等待 API 的结果。返回为 null 因为函数在 GET 发生之前返回。
HTTP 获取
get_UserAccess(practiceId: number, userId: number): UserAccess
var d: UserAccess;
this.httpclient.get(this.URL).subscribe.(data =>
d = data as UserAccess;
);
return d; //Keeps returning as null
调用组件
var userAccess = this.dataService.get_UserAccess(this.practice.practiceId, this.users[i].userId);
this.loadAccess(userAccess);
我尝试将 await 和 async 标记添加到 get 请求,但我不确定如何处理它返回到调用组件的承诺..
【问题讨论】:
@OnurArı 这不是 c#。不过谢谢! 独立于编程语言的想法是相同的。您对异步调用的理解是错误的,这就是它可以提供帮助的原因。 见前面提到的suggested duplicate。异步调用是编写/设计应用程序的常见且关键的构建块。了解如何在 javascript 中以及通过扩展 typescript 处理异步调用至关重要。了解这些核心概念将帮助您成为一名更好的程序员,并确保您不会一直在同一个问题上“磕磕绊绊”。 【参考方案1】:您可以像这样使用await
运算符:
async getAsyncData()
this.asyncResult = await this.httpclient.get(this.URL).toPromise();
console.log(this.asyncResult);
【讨论】:
【参考方案2】:HTTP 获取
get_UserAccess(practiceId: number, userId: number): UserAccess
return this.httpclient.get(this.URL); //Keeps returning as null
调用组件
async func()
var userAccess =await this.dataService.get_UserAccess(this.practice.practiceId,
this.users[i].userId).ToPromise();
this.loadAccess(userAccess);
注意每个调用 func() 的函数也应该带有异步签名。 祝你好运:)
【讨论】:
以上是关于Angular 8 - 如何使用 Promises 和 Async/Await [重复]的主要内容,如果未能解决你的问题,请参考以下文章
我可以将 async/await Promises 与可观察的 RXJS 混合使用吗?