Javascript-如何保存对“的引用”;这";用于使用原型模式在命名函数回调中进行访问
我在获取使用实现的javascript对象的引用时遇到问题 回调中的原型模式。回调来自第三方组件 我在我的对象中使用。第三方对象连接到消息总线 下面的伪代码显示了我是如何开始的(真正的代码正在运行) 但是我想让它在回调报告时自动重试连接 一个错误。如果if(err)阻止了它,我就不能再放一行了 说“this.messagebus.connection”,因为我必须添加另一个匿名 方法进行连接回调,它将继续进行。所以,我想 将回调逻辑拆分为如下命名函数Javascript-如何保存对“的引用”;这";用于使用原型模式在命名函数回调中进行访问,javascript,node.js,Javascript,Node.js,我在获取使用实现的javascript对象的引用时遇到问题 回调中的原型模式。回调来自第三方组件 我在我的对象中使用。第三方对象连接到消息总线 下面的伪代码显示了我是如何开始的(真正的代码正在运行) 但是我想让它在回调报告时自动重试连接 一个错误。如果if(err)阻止了它,我就不能再放一行了 说“this.messagebus.connection”,因为我必须添加另一个匿名 方法进行连接回调,它将继续进行。所以,我想 将回调逻辑拆分为如下命名函数 var mb = require('MsgB
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");
});
}
回调函数被调用,但我不知道如何获取引用
重新连接到要调用的对象。我也试着让回调成为一个
对象的原型函数,仍然没有参考。我无法创建变量
在全局范围内维护“this”,因为此类的用户可能
创建该类的多个实例。我对JavaScript相当陌生,所以我不知道
知道我是否遗漏了什么,或者我是否需要采取不同的方法
总共我将非常感谢任何帮助和/或指导。我终于找到了答案,正确的语法是
this.messagebus.connect.apply(this, [msgBusConnectCallback]);
this.messagebus.connect(msgBusConnectCallback.bind(this)) 你搞错了。它是
msgBusConnectCallback.apply(this)
slebetman的解决方案有效-在回调中,它现在指向我的对象。但是,回调的err参数总是未定义的,即使它不应该被定义。有什么想法吗?@PathfindermsgBusConnectCallback.apply(此[err])
添加[err]会导致javascript引用错误:err未定义(在对象“构造函数”中)@Pathfindervar self=this;this.messagebus.connect(函数(err){msgBusConnectCallback.apply(self,[err])})代码>
this.messagebus.connect.apply(this, [msgBusConnectCallback]);