gpt4 book ai didi

javascript - 为什么我应该从 Axios 调用中返回 "undefined",而它应该返回对象?

转载 作者:行者123 更新时间:2023-12-01 02:32:30 26 4
gpt4 key购买 nike

问题简介:

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

我想获取数据并使用 .then() 执行某些操作,但返回的值只是一个有 2 次未定义的数组

预期会发生什么:

它应该返回 2 个玩家对象,其中包含对象的 profile 键中的个人资料信息以及对象的 score 键中的得分值。

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

它从 2 个用户名中获取数据,他们可以互相“战斗”。它只是获取分数和关注者并返回一个总和。最后,它(应该)返回一个包含 2 个玩家对象的数组,该数组已按照获胜者排在第一位 (exampleArray[0])。

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

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

componentDidMount() {
const players = queryString.parse(this.props.location.search); //<== the usernames
const playersArray = [players.playerOneName, players.playerTwoName];
console.log(playersArray); // <== this logs the output as expected (an array with 2 usernames)

battle(playersArray).then((data) => { // <== the function it's all about
console.log(data); // <== data is => [undefined, undefined];
})
}

接下来是上面的战斗函数,它使用了另外 2 个函数:

战斗

export function battle(players) { // <== players aray with 2 usernames as string
return axios.all(players.map(getUserData)) // <== look 1 function below
.then(sortPlayers) // <== two functions below
.catch(handleError)
}

获取用户数据

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

排序玩家

let sortPlayers = (players) => {

return players.sort((a, b) => {
return b.score - a.score;
})
}

好吧,他们还使用其他功能,但实际上并不太复杂。当您也需要其他小 helper 的例子时请告诉我。

我尝试将调试器放置在代码中的不同位置,并且控制台记录了不同的内容,但我无法完成(我第一次真正使用 promise )。现在在这个小问题上坐了两个小时,我无法解决。

我认为问题出在战斗函数本身或getUserData

最后有一个小屏幕截图,我的 console.log 的输出如下所示:http://prntscr.com/hz5abq

提前致谢

最佳答案

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])
}
})

}

关于javascript - 为什么我应该从 Axios 调用中返回 "undefined",而它应该返回对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48214690/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com