Ich bin sehr neu in JavaScript und NodeJS, ich habe nur versucht, das Emittermuster in NodeJS zu verstehen. Wenn ich versuche, jede Sekunde ein Tick Ereignis zu emittieren, die setInterval-Funktion scheint das Programm zu arbeiten fein: -Ereignisse in NodeJS, Ereignis wird ausgegeben, innerhalb von setInterval, aber nicht ohne setInterval
var util = require('util'),
EventEmitter = require('events').EventEmitter;
var Ticker = function() {
var self = this;
setInterval(function() {
self.emit('tick');
}, 1000);
};
util.inherits(Ticker, EventEmitter)
var ticker = new Ticker();
ticker.on('tick', function() {
console.log('TICK');
});
Aber, wenn ich versuche, ein Ereignis zu emittieren, ohne die setInterval Methode, mein Fall ist nicht genannt zu werden: -
var util = require('util'),
EventEmitter = require('events').EventEmitter;
var Ticker = function() {
var self = this;
self.emit('tick');
};
util.inherits(Ticker, EventEmitter)
var ticker = new Ticker();
ticker.on('tick', function() {
console.log('TICK');
});
Bitte helfen Sie, ich verstehe nicht, wo ich falsch bin ... soweit mein Verständnis, wenn self.emit genannt wird, ticker.on nicht registriert ist, und damit die Ereignis wird verpasst. Wenn dies der Fall ist, wie gebe ich ein Ereignis aus, wenn ein Objekt erstellt wird.
Tipp: Wenn Sie erben, sollten Sie den übergeordneten Konstruktor in Ihrem Konstruktor aufrufen, falls er eine eigene Initialisierung durchführen muss. In diesem speziellen Fall würde das bedeuten, 'EventEmitter.call (this);' innerhalb Ihrer Konstruktorfunktion ('Ticker()') hinzuzufügen. – mscdex
Hallo, ich habe versucht, mit Ihrem Tipp, im Konstruktor, zeigte es einen Fehler, der sagt, dass ticker.on keine Funktion ist –