javascript - 在箭头函数之外进行控制台时,变量在箭头函数内部更改未更改
问题描述
我正在使用角度和打字稿,并想更改函数内变量的值。我正在使用服务来获取数据。代码如下所示:
isValue:boolean = false;
onChangeValue(list: List) {
this.someServive.getData(list).subscribe(
item => {
if(item.value === 1) {
this.isValue = true;
}
});
console.log(this.isValue); //the value is still false here
}
解决方案
由于 javascript 是异步的,因此在 getData 服务调用实际发生之前,该值不会改变。
在您的情况下,控制台在 getData 发生之前执行。
你可以用 promise 或 callback 来试试
试试下面:
isValue:boolean = false;
onChangeValue(list: List) {
onDataRecieved((res)=>{
console.log(this.isValue);
});
}
onDataRecieved(cb){
this.someServive.getData(list).subscribe(
item => {
if(item.value === 1) {
this.isValue = true;
cb(true);
}
});
}
推荐阅读
- php - 如何回显数据数组
- html - 如何删除我网站上的空白区域?
- java - 在 STS 中运行 Spring Boot 应用程序时找不到 Bean
- javascript - 如何在 Angular js 中将待办事项详细信息添加到我的待办事项列表中
- android - 为什么CameraX预览在真机上模糊不清,怎么对焦?
- python - 如何将带有字典的字典作为值保存到Python中的csv文件中
- c++ - C++ 标准:32 位和 64 位的奇怪有符号/无符号算术除法行为
- c - C 中是否有类似于 C# 的 out/out 关键字的东西?
- php - array_column 不适用于嵌套数组中的第一个键
- javascript - 获取 2 个字符串之间的文本(第一次和最后一次出现)