Вот упрощенная версия кода:Вложенные функции стрелка получает глобальную область видимости
class Service {
static _runRequest = (request, success, failure) => {
request.then(
(response) => {
if (ResponseHelper.wasSuccessful(response)) {
success(response);
}
else if (ResponseHelper.wasUnauthorized(response)) {
SessionHelper.refreshCurrentSession().then(
(refreshResponse) => {
if (refreshResponse === true) {
this._runRequest(request, success, failure);
}
}
);
}
}
);
}
}
Вопрос заключается в том, что при вызове _runRequest
снова, если сеанс был обновлен успешно, this
указывает на глобальную область видимости.
Любые идеи, почему и как это исправить? Не должно this
оставаться таким же независимо от того, сколько вложенных функций есть?
Просьба представить рабочий фрагмент кода, который демонстрирует проблему. – trincot
Если вы хотите, чтобы он указывал на 'Сервис', то не используйте стрелку как' _runRequest', используйте обычную функцию. – loganfsmyth
@loganfsmyth yup, который решил это! вау, да, как говорится, функция стрелки не является серебряной пулей. Пожалуйста, создайте правильный ответ, чтобы я мог его принять. – dccarmo