来自Promise React Native的结果

时间:2018-10-02 15:16:05

标签: javascript react-native firebase-authentication

这是我的连接方法:

export  function connexionUser(email, password) {

    result = firebase.auth().signInWithEmailAndPassword(email, password)
        .then((res) => {
            console.log("res: ", res)
            return true;
        })
        .catch(function (error) {
            return false;
        });
        return result;
};

这是我在index.js中的方法:

login = () => {

    const { email, password } = this.state;
    var result = connexionUser(email, password);
    console.log("result");
    console.log(result);
    if (result == true) {
        this.props.navigation.navigate('Favorites');
    }
}

问题: 我想在我的index.js中获得“ connexionUser()”的结果,以便能够管理导航或其他操作。 但是我的结果不是对还是错:

result
A {
  "a": 0,
  "b": null,
  "c": A {
    "a": 0,
    "b": qb {
      "a": [Circular],
      "b": [Function anonymous],
      "c": false,
      "f": null,
      "g": [Function anonymous],
      "next": null,
    },
    "c": A {
      "a": 0,
      "b": qb {
        .....
        .....and more

PS:我是React Native的初学者。

1 个答案:

答案 0 :(得分:2)

您总是可以尝试使用console.log来查看结果的输出。如果您在使用React Native调试时遇到麻烦,the docs on debugging真的很有帮助。

按现状,由于您实际上并未返回结果,因此您的registerUser将返回undefined。我想您正在尝试在result语句中返回then,但是then语句应该正在接收firebase函数的结果并返回这些结果。我建议您多读一些有关Promises的内容,以阐明它们的工作方式。一种可以重写的方式是:

export function registerUser(email, password) {

    result = firebase.auth().createUserWithEmailAndPassword(email, password).then((res) => {
            console.log("res: ", res)
            return res;
        })
        .catch((error) => {
            var errorCode = error.code;
            var errorMessage = error.message;
            alert(errorMessage);
        });
    return result;
}