Подтвердить что ты не робот

Javascript, promises, как получить доступ к переменной внутри внутри области

Я хочу иметь возможность вызывать функцию внутри области .then, и для этого я использую метод this.foo(). Но если я сделаю это внутри. Затем я получаю сообщение об ошибке, так как это кажется потерянным. Что я могу сделать?

В этом коде это эквивалентно тому, что для объекта этот же результат будет указан

console.log(this)
one().then(function() {
  console.log(this)
})

function one() {
  var deferred = $q.defer();
  deferred.resolve()
  return deferred.promise;
}

Это не работает

console.log(this)
var a = this;
one().then(function(a) {
  console.log(a)
})
4b9b3361

Ответ 1

Второй пример кода - это правильный путь. Поскольку изменения в новой функции изменяются, this тоже изменяется, поэтому вы правы, чтобы сделать ссылку на this вне функции.

Причина, по которой это произошло, состоит в том, что функция использует a, которую вы передали в функцию, а не глобальную a, которую вы указали вне ее.

Другими словами:

var a = this;
one().then(function () {
  console.log(a)
});