返回值总是未定义

Posted

技术标签:

【中文标题】返回值总是未定义【英文标题】:Returned Value always coming as undefined 【发布时间】:2022-01-14 14:34:21 【问题描述】:

这是我遇到问题的两种方法。我正在尝试从 FireStore DB 中读取一个值并将其返回给另一个方法,但是即使我能够在第二种方法中按预期打印该值,我总是将未定义为我的返回值。我也尝试增加超时。我可能无法使用 useState(),因为我在 if 条件下从不同的方法调用 updateScore 方法,因此显示反应挂钩规则错误。

export function updateScore(username, Score, registerCallBack) 
    var s = getScore(username)
    setTimeout(() => 
    console.log("++++++++")
    console.log(s)           // Always undefined
    console.log("++++++++")
    firebase.firestore()
    .collection('Users')
    .doc(username)
    .update(
        
            score: Score + s
        
    )   
    , 10000);
    


export function getScore(username) 
    console.log(username)
    firebase.firestore()
    .collection('Users')
    .doc(username)
    .get().then((doc) => 
            console.log(doc.data().score)  // PRINTING as Expected
            var score = doc.data().score;
            setTimeout(() => 
                console.log("-------")
                console.log(score)       // PRINTING as Expected
                console.log("-------")
                return score;
            , 50);
        
    )


【问题讨论】:

【参考方案1】:

我认为您应该将 firestore 函数分配给一个变量并返回该变量。

【讨论】:

以上是关于返回值总是未定义的主要内容,如果未能解决你的问题,请参考以下文章

Ajax 调用总是以未定义的形式返回并且没有到达后面的代码

如果指针对象不存在或指针未定义,总是获取指针值?

Redux state props 值未定义

api 请求返回未定义

即使值存在,为啥对象键返回未定义

为啥 map() 返回一个未定义值的数组?