gpt4 book ai didi

Javascript - 如何保存对 "this"的引用以使用原型(prototype)模式在命名函数回调中进行访问

转载 作者:行者123 更新时间:2023-11-30 12:35:16 25 4
gpt4 key购买 nike

我在获取对使用 实现的 javascript 对象的引用时遇到问题回调中的原型(prototype)模式。回调来自第 3 方组件我在我的对象中使用。第 3 方对象连接到消息总线。

下面的伪代码展示了我是如何开始的(真正的代码是有效的)

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) block ,我不能只放另一行 说“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");
});
}

调用了回调函数,但我不知道如何获取引用到要再次调用连接的对象。我也试过让回调成为对象的原型(prototype)函数,仍然没有引用。我无法创建变量在全局范围内维护“this”,因为此类的用户可能创建类的多个实例。我对 JavaScript 很陌生,所以我不知道知道我是否只是遗漏了什么,或者我是否需要采取不同的方法共。我将不胜感激任何帮助和/或指导。

最佳答案

this.messagebus.connect.apply(this, [msgBusConnectCallback]);

关于Javascript - 如何保存对 "this"的引用以使用原型(prototype)模式在命名函数回调中进行访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26268860/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com