angular - Angular 的 HTTP 订阅方法未正确分配实例变量
问题描述
private getAllData(): void {
this.stamm_solvara_jahrService.getAll().subscribe(resp => {
const keys = resp.headers.keys();
this.headers = keys.map(key=> `${key}: ${resp.headers.get(key)}`);
this.stamm_solvara_jahrData = {...resp.body};
console.log('Data inside method');
console.log(this.stamm_solvara_jahrData);
console.log('Header inside method');
console.log(this.headers);
});
console.log('Data outside method');
console.log(this.stamm_solvara_jahrData);
console.log('Header outside method');
console.log(this.headers);
}
因此,在订阅“流程”中,两个实例变量this.stamm_solvara_jahrData
都this.headers
具有一个值。除此之外,它们都是空的。如何解决这个问题?
解决方案
this.stamm_solvara_jahrService.getAll()
是一个异步方法,这就是为什么你必须调用subscribe
它。
因此,this.stamm_solvara_jahrData
并且this.headers
将在执行订阅回调时定义,但其余代码(订阅之外)不会等待这种情况发生,它会简单地尝试打印这两个变量,这仍然是undefined
.
我强烈建议阅读有关异步与同步代码的内容,以更好地理解为什么这种事情会在像 javascript 这样的语言中发生。
推荐阅读
- api - 如何通过rest api获取Bamboo中的linkedrepository信息?
- python - 在 Keras 中使用自定义损失函数进行模型训练时出错
- c++ - OpenGL GLFW + GLAD程序不绘制三角形
- reactjs - ID 应用于 React Bootstrap 生成的 a 元素,而不是包含的 div
- sql - 加入表格以获取会话前后的读数
- sql - ORDER BY CLAUSE 中的 CASE 语句
- python - 为什么 Flask WTF 中出现错误“CSRF 会话令牌丢失。”?
- sql - 从不在列中的数据在表中添加行
- python - 分离多处理进程
- exception - EF Core:更新数千条记录失败