使用带有 Fetch API 响应的承诺仍然使我的数据返回为未定义

Using a promise with Fetch API response still has my data returning as undefined

我正在构建一个简单的网络应用程序,允许用户在视频游戏中搜索玩家的统计数据。

这是我的代码

let player = [];
let proxy = "https://cors-anywhere.herokuapp.com/"
    let url =  proxy + "https://secure.runescape.com/m=hiscore_oldschool/index_lite.ws?player=Hess"

function getPlayer() {
  return fetch(url)
    .then((response) => response.text())
    .then((data) => console.log(data));
}
getPlayer().then((playerData) => {
  console.log(playerData);
  playerData.push(player);
  console.log(player);
});

如您所见,我正在尝试 console.log 响应并将响应推送到数组 player 以便我稍后可以使用 player 数组中的感染数据来执行一些其他操作。

为什么返回undefined?为什么我的回复不会被推送到 player 数组中?

let player = [];
let proxy = "https://cors-anywhere.herokuapp.com/"
let url = proxy + "https://secure.runescape.com/m=hiscore_oldschool/index_lite.ws?player=Hess"

function getPlayer() {
    return fetch(url)
        .then((response) => response.text())
        .then((data) => {
            console.log(data)
            return data;
        });
}
getPlayer().then((playerData) => {
    console.log(playerData);
    player.push(playerData);
    console.log(player);
});

您需要确保在 .then() 的每一步都返回一个值。而你的 .push 是错误的方式

据我所知,您可能在这里错误地切换了数组和数据 在下面的代码中,您不小心将数组推送到 playerData 而不是 opisite

playerData.push(player);

你应该这样做 player.push(玩家数据)

而且我认为你也应该删除第二个,如果你按照人们在这里所说的那样控制台记录它来获取数据,但我认为你也可以使用第一个然后如果你想要第二个就这样做:

    function getPlayer() {
  return fetch(url)
    .then((response) => response.text())
    .then((data) => data);
}