Как получить доступ к переменной класса внутри функции Promise then()?
Я работаю на PHP-сайте Angular4 +, где я отправляю HTTP-запросы на сервер, используя Promise, так как я хочу, чтобы мое приложение выполняло маршрутизацию в соответствии с ответом сервера. Я хочу получить доступ к переменной класса внутри then(), но он бросает undefined()
ошибка.
Вот мой код:
status = false;
checkUser(): Promise<any>{
// .....
return this.http
.get('http://localhost:8000/api/user', this.options)
.toPromise()
.then(this.extractData)
.catch(this.handleError);
}
private extractData(res: any) {
data = res.json();
this.status = data.status; // here it throws error undefined
return this.status;
}
Есть ли другой способ реализовать это?
1 ответ
Решение
Если вы передаете ссылку на функцию, this
больше не будет указывать на локальный экземпляр класса.
Ты можешь использовать bind
.then(this.extractData.bind(this)
или функции стрелок
.then((res) => this.extractData(res))
чтобы получить желаемое поведение.