【发布时间】:2021-03-08 03:23:02
【问题描述】:
我正在尝试从外部 api 获取数据,我使用 async 和 await。我想等待来自onClick 函数的用户输入,然后将 url 传递给异步函数并以 json 格式从该 url 获取数据。
OnClick 功能正在运行:
onClick(){
this.data=(<HTMLInputElement>document.getElementById('data')).value;
return this.url='https://api.url.info/feed/'+this.data
}
当我使用console.log(data2) undefined 时出现下一个错误:加载资源失败:服务器响应状态为 404(未找到)
async getData(){
var data2=this.url;
const response=await fetch(this.url);
this.data=await response.json();
}
ngOnInit(){
this.getData();
}
HTML
<input type="text" id="data" value=""/>
<button type="button" (click)="onClick()" id="btn">Search</button>
【问题讨论】:
-
我不熟悉 angular,但一般的方法是在事件处理程序中调用 fetching 函数。该事件处理程序已经是等待用户输入的方式。关于
async/await特别是:一个promise 只能解析一次,所以它不能代表一个可以多次触发的事件处理程序。 -
嗨,Santal,我绝对建议您阅读角度文档 angular.io/docs,因为使用
document访问 DOM 元素不是可行的方法。 Angular 就是专门为此而存在的,它可以简化您的生活并将其抽象出来。 HTTP 层也是如此。 AngularHttpClient让您可以执行 HTTP 请求,而不是自己执行fetch。 -
@maxime1992 是正确的。如果您与我们分享您的 HTML 模板,我们可以为您提供一个示例,其中包含执行这两项任务的正确 Angular 方式。
-
我编辑了我的帖子,现在我有了 html 模板
-
我仍然看不到 ID 等于“数据”的 HTML 元素,这是您尝试访问的内容。
标签: javascript angular async-await