usar - javascript, promesas, cómo acceder a esta variable dentro de un ámbito de aplicación
promise javascript (1)
Esta pregunta ya tiene una respuesta aquí:
- Método de objeto con ES6 / Bluebird promete 2 respuestas
Quiero poder llamar a una función dentro del ámbito .then , y para eso uso la forma this.foo () . Pero si hago esto dentro del . Entonces obtengo un error, ya que esto parece estar perdido. ¿Que puedo hacer?
En este código, esto sería equivalente a tener la misma salida para el objeto este
console.log(this)
one().then(function() {
console.log(this)
})
function one() {
var deferred = $q.defer();
deferred.resolve()
return deferred.promise;
}
Esto tampoco parece funcionar
console.log(this)
var a = this;
one().then(function(a) {
console.log(a)
})
Su segundo ejemplo de código es el camino correcto a seguir. Debido a que el alcance cambia en la nueva función, this
también cambia, por lo que tiene derecho a hacer una referencia a this
fuera de la función.
La razón por la que falló es porque la función está utilizando a
que pasó a la función en lugar de la global que definió fuera de ella.
En otras palabras:
var a = this;
one().then(function () {
console.log(a)
});