angular - 如何使 Angular Async Await 工作或等到 http 调用完成?
问题描述
我在等待得到回复时遇到了一些问题。这是代码
Component.ts 点击搜索按钮 doSearch() 将被调用,然后触发 http 调用以从 JSON 获取数据。
doSearch() {
console.log('reached 1');
this.getDataFromJson();
console.log('reached 5');
}
getDataFromJson(): void {
this.dataService.getdata().then((data: any) => {
console.log('reached 3');
data.forEach(item => {
//console.log(item[1]);
});
console.log('reached 4');
});
}
数据服务.ts:
这里进行实际的 http 调用以获取 json。Te json 在 assets/json 文件夹中。
datatURL = 'assets/json/data.json';
async getdata() : Promise<MyData[]> {
const result= await this.httpClient.get<MyData[]>(this.dataURL).toPromise();
console.log('reached 2');
return result;
}
我希望控制台打印为
- 达到1
- 达到2
- 达到3
- 达到4
- 达到5
但相反,执行顺序是(http调用是异步的,不等待??)
- 达到1
- 达到5
- 达到2
- 达到3
- 达到4
在执行下一个块之前,我需要解析数据以获取一些信息。我怎样才能做到这一点?
解决方案
推荐阅读
- javascript - 使用特定键为对象设置样式
- web-component - 将自定义 prop 从 index.html 传递到 stencil.js 中的实际组件
- sql-server - 使用 SSIS 和 T-SQL 将日期转换为 dd.mm.yyyy
- next.js - Next.js - 如何确保
is set by the time the history change event fires?</h1> <div id="body"><p>In my Next.js app, I'm setting the <code><title></code> tag for individual pages using the recommended method:</p> & - tomcat - 语法错误:从 IntelliJ 启动 Tomcat 时出现“(”意外
- javascript - 如何从gui捕获数据
- windows-10 - Windows 10 BIOS 问题
- amazon-web-services - 是否建议将 k8s 仪表板用于生产就绪服务器?
- linux - Raspberry pi make 错误找不到 -lbcm_host
- scala - IntelliJ IDEA 2018.3 scala 2.12 sbt 1.0 程序集未解决的依赖关系