Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript “我为什么要回来?”;“未定义”;从我的Axios调用,它何时应该返回我的对象?_Javascript_Reactjs_Promise_Axios - Fatal编程技术网

Javascript “我为什么要回来?”;“未定义”;从我的Axios调用,它何时应该返回我的对象?

Javascript “我为什么要回来?”;“未定义”;从我的Axios调用,它何时应该返回我的对象?,javascript,reactjs,promise,axios,Javascript,Reactjs,Promise,Axios,问题介绍: 在我的React应用程序中,我正在对Github进行一些API调用,以获取一些用户数据。在另一个函数中,我调用这些函数并使用Axios的.all()方法等待它 我想获取数据并使用.then()对其进行处理,但返回的值只是一个数组,有2倍未定义 预期会发生什么: 它应该返回2个玩家对象,在对象的profile键中有profile信息,在对象的score键中有分数值 简而言之,我的应用程序在做什么? 它从两个用户名获取数据,它们可以互相“战斗”。它只获取分数和追随者,然后返回一个总数。最

问题介绍:

在我的React应用程序中,我正在对Github进行一些API调用,以获取一些用户数据。在另一个函数中,我调用这些函数并使用Axios的
.all()
方法等待它

我想获取数据并使用
.then()
对其进行处理,但返回的值只是一个数组,有2倍未定义

预期会发生什么:

它应该返回2个玩家对象,在对象的
profile
键中有profile信息,在对象的
score
键中有分数值

简而言之,我的应用程序在做什么?

它从两个用户名获取数据,它们可以互相“战斗”。它只获取分数和追随者,然后返回一个总数。最后,它(应该)返回一个数组,其中有两个玩家对象已经与第一名的获胜者排序(
exampleArray[0]

一般信息 这是一款使用组件的react应用程序。它实际上是关于一个非常小的组件和另一个文件中的助手函数

这里是我调用自定义函数(返回未定义的函数)的地方:

排序层

let sortPlayers = (players) => {

return players.sort((a, b) => {
    return b.score - a.score;
})
}
好的,它们也使用其他函数,但它们实际上并不太复杂。如果你也需要其他小助手的例子,请告诉我

我尝试将调试器放在代码中的不同位置,控制台记录了不同的内容,但我无法完成(我第一次真正使用承诺)。现在坐在这个小问题面前两个小时,我想不出来

我认为问题在于战斗功能本身或
getUserData

最后是一个小屏幕截图,显示了my console.log的输出:


提前感谢

getUserData需要返回它创建的承诺。目前它没有返回任何内容,因此返回一个隐式的undefined,从而
players.map(getUserData)
生成一个
[undefined,undefined]

也就是说,这样做:

let getUserData = (player) => {
    // VVV added return statement
    return axios.all([
        getProfile(player),
        getRepos(player)
    ]).then((data) => {
        return {
            profile: data[0],
            score: calculateScore(data[0], data[1])
        }
    })
}

getUserData需要返回它创建的承诺。目前它没有返回任何内容,因此返回一个隐式的undefined,从而
players.map(getUserData)
生成一个
[undefined,undefined]

也就是说,这样做:

let getUserData = (player) => {
    // VVV added return statement
    return axios.all([
        getProfile(player),
        getRepos(player)
    ]).then((data) => {
        return {
            profile: data[0],
            score: calculateScore(data[0], data[1])
        }
    })
}

getUserData中没有返回任何内容。添加
return
或删除
{}
包装
axios.all

let getUserData = (player) => {

    return axios.all([
        getProfile(player),
        getRepos(player)
    ]).then((data) => {
        return {
            profile: data[0],
            score: calculateScore(data[0], data[1])
        }
    })

}

getUserData中没有返回任何内容。添加
return
或删除
{}
包装
axios.all

let getUserData = (player) => {

    return axios.all([
        getProfile(player),
        getRepos(player)
    ]).then((data) => {
        return {
            profile: data[0],
            score: calculateScore(data[0], data[1])
        }
    })

}

您需要调试回调以找出数据丢失的位置。我知道你已经这么做了,但为了解决这个问题,我们必须基本上建立一个副本。实际上,不管怎样,
getUserData
并没有返回
axios()
。这种方法解决了我的问题。我不知道你现在感觉是好是坏。再次使用Thx。您需要调试回调以找出数据丢失的位置。我知道你已经这么做了,但为了解决这个问题,我们必须基本上建立一个副本。实际上,不管怎样,
getUserData
并没有返回
axios()
。这种方法解决了我的问题。我不知道你现在感觉是好是坏。再次谢谢你解决了我的问题。当然我忽略了一些重要的东西。谢谢你解决了我的问题。当然,我忽略了一些重要的东西。嗨,thx解决了我的问题。你在这儿的时候,我有个小问题要问你。在stackoverflow上评论每个答案是好的还是常见的做法?对我来说没问题,但也许这样做不好?我对stack是个新手,我在谷歌上搜索了一下,但什么也找不到:D再次感谢你!不,很好,很受欢迎。在这种情况下,我想你们马上就知道问题是什么了,但如果答案与预期不符,通常会有一些反复的澄清或调整:)非常感谢。您好,thx解决了我的问题。你在这儿的时候,我有个小问题要问你。在stackoverflow上评论每个答案是好的还是常见的做法?对我来说没问题,但也许这样做不好?我对stack是个新手,我在谷歌上搜索了一下,但什么也找不到:D再次感谢你!不,很好,很受欢迎。在这种情况下,我想你们马上就知道问题是什么了,但若答案和预期的不太一样,通常在澄清或调整上会有一些反复:)非常感谢。
let getUserData = (player) => {

    return axios.all([
        getProfile(player),
        getRepos(player)
    ]).then((data) => {
        return {
            profile: data[0],
            score: calculateScore(data[0], data[1])
        }
    })

}