Node util.inherits和这个问题

时间:2013-11-27 17:43:27

标签: javascript node.js express this bind

我正在尝试解决节点服务器中的“此问题”。如果我不将worker.stuff替换为worker.stuff.bind(worker),则无效。

有没有办法在工人类本身中添加bind每次调用函数时都使用它很无聊。

这是服务器:

var app = require("express")()
    , Worker = require('./worker')
    , worker = new Worker();

app.get("/stuff", worker.stuff);

worker.on('done', function () {
    console.log('done')
});

app.listen(3000);

这是工人:

function Worker(options) {}

require('util').inherits(Worker, require('events').EventEmitter);

Worker.prototype.stuff = function (req, res) {
    this.emit('done');
    res.send();
}

module.exports = Worker;

1 个答案:

答案 0 :(得分:2)

这是我能想到的最好的:

function Worker(options) {
    var self = this;

    this.stuff = function (req, res) {
        self.emit('done');
        res.send();
    }
}

require('util').inherits(Worker, require('events').EventEmitter);

module.exports = Worker;

在构造函数中定义所有方法,并引用已关闭的self而不是this

我可能会咬紧牙关并在必要时使用bind