我目前正在学习NodeJS和Javascript OOP。我需要使用一个使用事件处理程序的包。但我对Javascript哲学有点困惑。
我有一个节点模块,运行方式如下:
ViewGroup.addView(myButton);
我想在“device.on()”事件处理程序之外调用“device”对象的“transfer()”方法。 有可能吗?
提前致谢
编辑:我正在尝试这个var Module = require("...");
//...
MyObject.prototype.start = function() {
var myModule = Module();
myModule.on('connected', function(device) {
console.log('New device connected !');
device.on('status', function(status){
console.log('Device status : '+status);
device.transfer("someStuff");
});
});
}
//...
答案 0 :(得分:1)
由于MyObject
有多种方法想要访问device
,因此有几种方法可以设计:
MyObject
被实例化时,它会宣传on('connected')
回调并将其存储为devicePromise
。原型上的所有方法都遵循以下模式:return this.devicePromise.then(function (device) { /* do whatever */ })
。任何返回值的方法现在都会返回promises MyObject
无法直接实例化,但只能通过返回MyObject
实例的承诺的工厂函数创建。此工厂函数调用on('connected')
,并使用MyObject
实例解析返回的promise,其中device
属性已设置。所有方法都可以访问this.device