Comment puis-je hériter des événements.Eventemitter méthodes sur un module implémentant le modèle de conception singleton? Il résulte de l'erreur: TypeError: Object #
3 Réponses :
Je ne vois pas le modèle singleton dans votre question. Vous voulez dire quelque chose comme ça? Il serait utilisé comme: P> var Singleton = require('./singleton')
, a = Singleton.getInstance()
, b = Singleton.getInstance();
console.log(a === b) // yep, that's true
a.on('foo', function(x) { console.log('foo', x); });
Singleton.getInstance().emit('foo', 'bar'); // prints "foo bar"
Utilisé singleton.pototype.createclient code> pour ajouter la fonction de mon exemple. Dans App.js
var s = nécessite ('singleton.js'). Getinstance (); S.Createclient ({URL: 'Test'}). Sur ("Connecté", fonction () {}); code> ne fonctionne pas
TypeError: impossible d'appeler la méthode "sur" de non définie code>
NEWLIND, a dû retour auto code> pour la chaînage pour travailler: p thx!
J'ai réussi à retirer cela en utilisant la classe d'émetteur d'événement Singleton suivant. Arguments.callee._singletonInstance est la manière préférée de faire des singletons en JavaScript: http: // code.google.com/p/jslibs/wiki/javascripttips#singleton_pattern Vous pouvez ensuite accéder à l'émetteur d'événement dans l'un de vos modules à l'aide des suivants P> Module A: P> var emitter = require('<path_to_your_emitter>');
emitter.on('myCustomEvent', function(arg1, arg2, ...) {
. . . this will execute when the event is fired in module A
});
Et comment exécutons-nous le module B s'il est dans un fichier indépendant. Allons-nous inclure dans notre index.js / app.js?
Pour faciliter la tâche, j'ai créé un package NPM: événement central Ce que vous avez à faire est dans le premier module: p>
p>
// Say Something var emitter = require('central-event'); emitter.on('talk', function(value){ console.log(value); // This will pring hello world });