let SocketService = class SocketService {
constructor(url) {
this.url = url;
this.ws = null;
this.timerID = 0;
this.init();
}
init() {
let that = this;
this.ws = new WebSocket(this.url);
this.ws.onclose = function() {
that.timerID = window.setInterval(that.init, 5000);
};
}
}
quand j'arrêt mon WebSocket server afin de tester mon script,
j'obtiens :
this.url = undefined; (that.url aussi)
c'est seulement à la première fois où init() est lancé que j'obtiens des
valeurs "correctes", pourquoi ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Une Bévue
Le 29/01/2017 à 10:21, Une Bévue a écrit :
J'ai une class comme ça : let SocketService = class SocketService { constructor(url) { this.url = url; this.ws = null; this.timerID = 0; this.init(); } init() { let that = this; this.ws = new WebSocket(this.url); this.ws.onclose = function() { that.timerID = window.setInterval(that.init, 5000); }; } } quand j'arrêt mon WebSocket server afin de tester mon script, j'obtiens : this.url = undefined; (that.url aussi) c'est seulement à la première fois où init() est lancé que j'obtiens des valeurs "correctes", pourquoi ? tout se passe "comme si" >this< était perdu...
en that.timerID = window.setInterval(function() {that.init();}, 5000);
Le 29/01/2017 à 10:21, Une Bévue a écrit :
J'ai une class comme ça :
let SocketService = class SocketService {
constructor(url) {
this.url = url;
this.ws = null;
this.timerID = 0;
this.init();
}
init() {
let that = this;
this.ws = new WebSocket(this.url);
this.ws.onclose = function() {
that.timerID = window.setInterval(that.init, 5000);
};
}
}
quand j'arrêt mon WebSocket server afin de tester mon script,
j'obtiens :
this.url = undefined; (that.url aussi)
c'est seulement à la première fois où init() est lancé que j'obtiens des
valeurs "correctes", pourquoi ?
J'ai une class comme ça : let SocketService = class SocketService { constructor(url) { this.url = url; this.ws = null; this.timerID = 0; this.init(); } init() { let that = this; this.ws = new WebSocket(this.url); this.ws.onclose = function() { that.timerID = window.setInterval(that.init, 5000); }; } } quand j'arrêt mon WebSocket server afin de tester mon script, j'obtiens : this.url = undefined; (that.url aussi) c'est seulement à la première fois où init() est lancé que j'obtiens des valeurs "correctes", pourquoi ? tout se passe "comme si" >this< était perdu...
en that.timerID = window.setInterval(function() {that.init();}, 5000);
Elhwen Dico
Le 29/01/2017 à 10:21, Une Bévue a écrit : Je suis pas un spécialiste, mais init() { this.ws = new WebSocket(this.url); this.ws.onclose = () => { this.timerID = window.setInterval(this.init.bind(this), 5000); }; } ça pourrait le faire... La forme arrow function fait que this reste bon dans la fonction onclose. Le bind fixe le this d'une fonction à la valeur passée en argument.
J'ai une class comme ça : let SocketService = class SocketService { constructor(url) { this.url = url; this.ws = null; this.timerID = 0; this.init(); } init() { let that = this; this.ws = new WebSocket(this.url); this.ws.onclose = function() { that.timerID = window.setInterval(that.init, 5000); }; } } quand j'arrêt mon WebSocket server afin de tester mon script, j'obtiens : this.url = undefined; (that.url aussi) c'est seulement à la première fois où init() est lancé que j'obtiens des valeurs "correctes", pourquoi ? tout se passe "comme si" >this< était perdu...
ça pourrait le faire...
La forme arrow function fait que this reste bon dans la fonction onclose.
Le bind fixe le this d'une fonction à la valeur passée en argument.
J'ai une class comme ça :
let SocketService = class SocketService {
constructor(url) {
this.url = url;
this.ws = null;
this.timerID = 0;
this.init();
}
init() {
let that = this;
this.ws = new WebSocket(this.url);
this.ws.onclose = function() {
that.timerID = window.setInterval(that.init, 5000);
};
}
}
quand j'arrêt mon WebSocket server afin de tester mon script,
j'obtiens :
this.url = undefined; (that.url aussi)
c'est seulement à la première fois où init() est lancé que j'obtiens des
valeurs "correctes", pourquoi ?
Le 29/01/2017 à 10:21, Une Bévue a écrit : Je suis pas un spécialiste, mais init() { this.ws = new WebSocket(this.url); this.ws.onclose = () => { this.timerID = window.setInterval(this.init.bind(this), 5000); }; } ça pourrait le faire... La forme arrow function fait que this reste bon dans la fonction onclose. Le bind fixe le this d'une fonction à la valeur passée en argument.
J'ai une class comme ça : let SocketService = class SocketService { constructor(url) { this.url = url; this.ws = null; this.timerID = 0; this.init(); } init() { let that = this; this.ws = new WebSocket(this.url); this.ws.onclose = function() { that.timerID = window.setInterval(that.init, 5000); }; } } quand j'arrêt mon WebSocket server afin de tester mon script, j'obtiens : this.url = undefined; (that.url aussi) c'est seulement à la première fois où init() est lancé que j'obtiens des valeurs "correctes", pourquoi ? tout se passe "comme si" >this< était perdu...
Une Bévue
Le 30/01/2017 à 19:53, Elhwen Dico a écrit :
init() { this.ws = new WebSocket(this.url); this.ws.onclose = () => { this.timerID = window.setInterval(this.init.bind(this), 5000); }; } ça pourrait le faire... La forme arrow function fait que this reste bon dans la fonction onclose.
init() { this.ws = new WebSocket(this.url); this.ws.onclose = () => { this.timerID = window.setInterval(this.init.bind(this), 5000); }; } ça pourrait le faire... La forme arrow function fait que this reste bon dans la fonction onclose.