在javascript中返回未定义的布尔函数?

在javascript中返回未定义的布尔函数?,javascript,function,firebase,boolean,react-native,Javascript,Function,Firebase,Boolean,React Native,我目前正在使用Firebase中存储的数据检查用户提交的解决方案是否正确。这涉及到在用户按下“提交”按钮时调用函数getSolutionAndCompare。然而,出于某种原因,尽管checkSolution返回true到getSolutionAndCompare,但当我在onSubmitPressed中调用getSolutionAndCompare时,它的计算结果为未定义。知道我做错了什么吗 相关代码: onSubmitPressed: function() { var output

我目前正在使用Firebase中存储的数据检查用户提交的解决方案是否正确。这涉及到在用户按下“提交”按钮时调用函数
getSolutionAndCompare
。然而,出于某种原因,尽管
checkSolution
返回true到
getSolutionAndCompare
,但当我在
onSubmitPressed
中调用
getSolutionAndCompare
时,它的计算结果为未定义。知道我做错了什么吗

相关代码:

onSubmitPressed: function() {
    var output = this.getSolutionAndCompare();
    console.log('output ' + output); //this is returning undefined
    if (this.getSolutionAndCompare()) {
        Alert.alert(
            'Correct',
            "Woohoo!"
        );
    }
    else {
        Alert.alert(
            'Incorrect Submission',
            'Try again!',
        );
    }
},

getSolutionAndCompare: function() {
    var databaseSolution;
    solutionsRef.orderByChild('question_id').equalTo(Number(this.props.questionId)).once('value', (snap) => {
        var solution = snap.val();
        for (var key in solution) {
            databaseSolution = solution[key].solution;
        }
        return this.checkSolution(databaseSolution); //checkSolution returns true here
    });

},

checkSolution: function(databaseSolution) {
    if (this.state.submission == databaseSolution) {
        return true;
    }
    else {
        return false;
    }
},

getSolutionAndCompare
没有
return
语句,因此它返回
undefined
,因为这是默认值


(您在
getSolutionAndCompare
中声明的匿名箭头函数有一个return语句,但它看起来无法返回其值)。

您希望在
solution
中保存什么样的数据<代码>变量解决方案=snap.val()?继续迭代
解决方案
对象,但只检查return语句中的最终值。编辑-该返回语句似乎没有返回
getSolutionAndCompare
方法,因此该方法返回
undefined
solutionsRef.orderByChild('question_id').equalTo(Number(this.props.questionId))。once('value',(snap)=>{
--这是一个异步调用吗?无论哪种方式,您都返回一个内部函数,这不是您想要的。