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