Javascript-如何保存对“;这个“;用于使用原型模式在命名函数回调中进行访问
Javascript - How to save a reference to "this" for access in named function callback using prototype pattern
我在获取对用回调中的原型模式。回调来自第三方组件我在我的对象中使用。第三方对象连接到消息总线。
下面的伪代码显示了我是如何开始的(真正的代码正在工作)
var mb = require('MsgBus')
TestClass = function() {
this.messagebus = new mb.MsgBus();
this.messagebus.connect(function(err) {
if(err)
console.log("Error connecting");
else
console.log("Connected");
});
}
但后来我想让它在回调报告时自动重试连接错误。如果if(err)阻止了,我不能再加一行说"this.messagebus.connection",因为我必须添加另一个匿名方法进行连接回调,它会一直持续下去。所以,我想将回调逻辑拆分为一个命名函数,如
var mb = require('MsgBus')
TestClass = function() {
this.messagebus = new mb.MsgBus();
this.messagebus.connect(msgBusConnectCallback);
}
function msgBusConnectCallback(err) {
if(err)
this???.messagebus.connect(msgBusConnectCallback);
else
console.log("Connected");
});
}
回调函数被调用,但我不知道如何获得引用到对象以再次调用connect。我还试着让回调对象的原型函数,仍然没有引用。我无法创建变量在全局范围中维护"this",因为此类的用户可能创建类的多个实例。我是JavaScript的新手,所以我不知道我是错过了什么,还是需要采取不同的方法总共如果有任何帮助和/或指导,我将不胜感激。
this.messagebus.connect.apply(this, [msgBusConnectCallback]);
我终于找到了答案,正确的语法是this.messagebus.connect(msgBusConnectCallback.bind(this));
相关文章:
- Node.js使用Series函数(模式?)实现流控制时出现意外结果
- Mongoose TypeError:实例化模式类型的对象时,对象不是函数
- 将值传递到jQuery成功函数中的引导模式
- JavaScript模块模式-如何在使用对象/函数之前激发构造函数/init函数
- 为什么在javascript中的模块模式中实现Lazy函数时范围会发生变化
- 为模式设置的值在通过 AJAX 成功函数设置时不显示
- 将值传递给模式窗口中的 JavaScript 函数
- 传递参数时如何避免模块模式中的 getter/setter 函数
- 未知的 JavaScript 函数声明模式
- 如何在 JavaScript 函数中获取传递给引导模式的参数
- 函数调用的变量更改未显示在角度引导模式窗口中
- twitter引导模式——如何将数据传递给回调函数
- 如何在javascript函数中显示引导模式
- 在引导模式中使用“ng click”触发函数
- 模块模式:函数未定义
- 同步/异步AJAX函数的模式
- 是'要求(..)'常见的javascript模式或库函数
- javascript严格模式下oop函数的全局初始化
- Javascript DRY设计模式-函数与对象
- 在JavaScript中实现模块模式函数的最佳方式