Kis*_*ngi 2 node.js eventemitter
以下node.js脚本无效
var EventEmitter = require('events').EventEmitter;
var util = require('util');
var TickE = function() {
}
util.inherits(TickE, EventEmitter); //TickE.prototype.__proto__ = EventEmitter.prototype;
TickE.prototype.ticker = function() {
var self = this;
setInterval (function () {
self.emit('tick');
}, 1000);
};
var t = new TickE ();
//console.log (util.inspect(t));
t.on('tick', function() { console.log ('Tick...');});
t.ticker();
Run Code Online (Sandbox Code Playgroud)
如果我调用下面的emit方法,它就无法工作
TickE.prototype.ticker = function() {
//var self = this; // commented this line
setInterval (function () {
this.emit('tick'); // using this in place of self
}, 1000);
};
Run Code Online (Sandbox Code Playgroud)
self只是一个变量控制参考,为什么这会抛出错误?
因为该this关键词具有在由调用的函数不同的值setInterval.
您已经知道self闭包中的变量解决方案,不同(和更短)的解决方案将绑定 emit方法:
setInterval(this.emit.bind(this, "tick"), 1000);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6599 次 |
| 最近记录: |