在Promise catch块中访问它

时间:2017-10-09 08:10:17

标签: javascript reactjs react-native promise es6-promise

在本地反应中如何在Promise catch块中使用“this”?

this.guestErrorAlert();

 GuestApi
      .guestLogin()
      .then(function (response) {
        GuestApi.onSuccess(response);
        return response;
      })
      .then(() => this.openLanguageStartupScreen())
      .catch(function (error) {
        GuestApi.onError();
        console.log(error);
        this.guestErrorAlert();
      });

2 个答案:

答案 0 :(得分:2)

问题在于范围,使用胖箭来解决问题。

将此代码块替换为:

.catch((error) => {
    GuestApi.onError();
    console.log(error);
    this.guestErrorAlert();
});

答案 1 :(得分:0)

如评论中所提到的,您可以使用箭头功能,也可以定义一个函数并将其绑定。

示例:

let catchCallback = function() {...};
catchCallback = catchCallback.bind(this);

GuestApi.guestLogin()
      .then(...)
      .catch(catchCallback);

希望这有帮助!