Javascript寄存器回调
Javascript register callback
我有一项服务,想做以下
var service = new Service();
service.onEvent(cb);
var my_module = {
logged_in(){},
logged_out(){}
}
function cb(data){
if (data){
my_module.logged_in(data);
} else {
my_module.logged_out();
}
}
module.exports = my_module;
然后在其他地方使用此模块:
import my_module from 'somefile';
my_module.logged_in = function(data){
_this.setState({user: data});
}
my_module.logged_out = function(data){
_this.setState({user: null});
}
然而,这不起作用。函数cb抱怨没有定义my_module。
JS吊装确实在这里抓住了你。变量声明和函数语句被"提升"到当前作用域的最开始。这意味着,当提前触发服务事件时,可能不定义变量my_module
。
参见:
- http://www.sitepoint.com/demystifying-javascript-variable-scope-hoisting/
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/var#var_hoisting
相关文章:
- 在es6中,将带有回调的事件侦听器设置为可迭代的
- Dojo 加载器不加载回调中使用的小部件依赖项
- less.js - 在解析器的回调中获取变量值
- 如何将回调添加到 gstatic 加载器.js谷歌图表库
- 循环中的Node.js回调具有错误的迭代器值
- 正确使用Web字体加载器活动/非活动回调
- CollectionFS中是否存在用于文件下载的事件侦听器/回调
- 谷歌地图API v3:缩放更改后是否有回调或事件侦听器
- 为什么在定义回调/侦听器函数(异步消息传递,port.on)后没有立即设置全局变量
- 日期选取器在回调后丢失
- Requirejs:dist 失败,加载器插件没有在构建:文本中调用加载回调
- 回调事件侦听器
- 编校器:访问插件中的回调
- Ajax 成功回调从未执行,解析器错误
- 网格器不使用回调函数
- 在 jquery 中具有类选择器回调
- 运行调试器时未运行的回调;
- 在回调时关闭TinyMCE编辑器save_onsavecallback
- Javascript寄存器回调
- 在寄存器设备上推送回调