Ich habe ein Dojo-Objekt, ich möchte eine Retry-Verbindung zu einem Web-Socket. Die Verbindung zum Web-Socket wird jedoch durch eine Callback-Funktion ausgelöst. Ich habe versucht, eine topic
zu abonnieren, um eine erneute Verbindung zu ermöglichen, ohne this
zu verwenden. Wenn die Klasse jedoch über zwei oder mehr Instanzen verfügt, werden alle abonnierten Nachrichten für alle Instanzen von MyClass abgerufen. Gibt es eine Möglichkeit, nur die ursprüngliche Instanz, die keine Verbindung herstellen kann, die abonnierte Nachricht abzurufen?Zugriff auf Closure-Dojo-Objekt, wenn Callback-Bereich eingegeben wurde
// Dojo class
dojo.declare("MyClass", null, {
constructor: function() {
dojo.subscribe("WebSocketConnect", this, function() {
this.DoConnect();
});
},
DoConnect: function() {
this.myWebSocket = new WebSocket('ws://192.0.0.1');
// ウェブソケットは閉じたイベント
this.myWebSocket.onclose = function() {
// The this in this clousure is "myWebSocket"
setTimeout(function() {
dojo.publish("WebSocketConnect", [ ]);
}, 5000);
};
}
}
Hinweis: Das Projekt, an dem ich gerade arbeite, verwendet Dojo 1.4. Ziemlich alt, aber ich habe keine Erlaubnis, es zu aktualisieren.
Ist 'MyClass' sein soll ein Singleton? Wenn nein, funktioniert auch Ihr Konstruktor nicht. – Bergi
@Bergi Warum würde der Konstruktor nicht funktionieren? Ich habe das verwendet, um die Instanz anzuzeigen? Was vermisse ich? – Nap
Genau aus dem Grund, den Sie bereits angegeben haben, erhalten * alle * Instanzen ein solches globales Ereignis. – Bergi