Javascript哲学和事件

时间:2015-11-27 19:46:23

标签: javascript node.js events

我目前正在学习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");
        });
    });
}
//...

1 个答案:

答案 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