javascript - loop - settimeout typescript
javascript setTimeout error de llamada (1)
Usar la call
no ayuda aquí: llama a setTimeout
con su objeto, pero la función de devolución de llamada se sigue llamando desde el alcance global. Lo que realmente quieres hacer es algo como esto:
function foo() {
var self = this;
this.bar = function() {
console.log("keep going");
window.setTimeout(function() { self.bar(); }, 100);
}
this.bar();
}
Editar: si realmente desea algo similar al enfoque de call
, puede usar bind
que vincula this
valor para una función:
window.setTimeout(this.bar.bind(this), 100);
Sin embargo, esto es parte de la nueva especificación ECMAScript 5 que aún no es compatible con todos los navegadores.
Quiero invocar la función window.setTimeot
con mi ámbito personalizado, así que utilizo el método de call
, pero hay algo mal.
function foo() {
this.bar = function() {
console.log("keep going");
window.setTimeout.call(this,this.bar,100);
}
this.bar();
}
new foo;
en Firefox esto imprime a la consola solo 1 línea y luego nada, y bajo google chrome arroja un TypeError
.
¿Cuál es el problema en mi código?