如何在Promise then()函数中访问类变量?

时间:2018-01-02 16:21:39

标签: angular http typescript angular-promise

我正在使用Angular4 + PHP网站,我使用Promise向服务器发送HTTP请求,因为我希望我的应用程序根据服务器的响应执行路由。我想在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 个答案:

答案 0 :(得分:3)

如果传递函数引用,this将不再指向本地类实例。

您可以使用bind

.then(this.extractData.bind(this)

或箭头功能

.then((res) => this.extractData(res))

获得理想的行为。