javascript - 打字稿 - 箭头函数中的更新变量
问题描述
我有这样的功能:
private data: MyCustomDataObject;
private getData(): boolean {
let val: boolean = true; // variable declared
this.service.callMethod().subscribe(data => {
this.data = data;
if (data == null) {
val = false; // val declared above is not updating
}
});
return val; // this is still true, should be false
}
怎么val
不更新了?
解决方案
这里发生的事情是subscribe
获取您提供的功能,并在某些事件发生时挂起它以备后用。当你传递它时,它实际上并没有运行你的函数。正因为如此,getData
函数会继续运行,而不会调用您的回调,因此在返回val
之前 never 的值会发生变化。getData
如果您希望它返回false
,则需要在val
传递给的回调之外进行更改subscribe
。
推荐阅读
- angular - 角度路由在托管应用程序上无法正常工作
- php - 通过 PHP 与交互式 Shell 通信
- java - 当特定表中发生 INSERT、UPDATE 或 DELETE 时,Oracle 是否提供了一个包来获取事件/操作?
- logical-operators - 逻辑左移 0
- authentication - Gitlab阻止用户在ldap dn中出现区分大小写的错误
- excel - 删除具有特定条件的重复项
- linux - 命令“剪切”不显示最后一列 CSV
- bash - 脚本检查已建立连接的数量,如果连接太多,则重新启动应用程序
- sql - 从包含累积和增量条目的表中查找滞后累积总计
- macos - Mojave 上的 GLUT 批处理运动回调?