小编ETH*_*Han的帖子

在 svelte (#await) 中的 Promise 上使用异步等待不会返回在稍后的函数调用中格式化的所需数据

我目前正在使用一个不返回 JSON 的 API。为了解决这个问题,我获取响应并将其推送到一个数组(同时对其进行格式化以删除任何缩进并拆分响应中的每个数字)。然后,我使用这个包含 183 个数字的数组,并对包含 183 个字符的数组运行 for 循环,以根据响应生成一个对象(具有自定义键值对)。

当我开始使用 HTML 中的数据时,事情变得令人困惑。通常你可以直接说<p>{data.overallRank}</p>,但我收到了对象未定义的错误。这是有道理的,因为 是data = {}在函数运行之前才创建的。

在寻找解决方案后,我遇到了苗条的等待块。您可以在这里阅读它们并查看教程:https ://svelte.dev/tutorial/await-blocks

在尝试实现此功能后,我有以下代码:

let playerStats = []
    let proxy = "https://cors-anywhere.herokuapp.com/"
    let url =  proxy + "https://secure.runescape.com/m=hiscore_oldschool/index_lite.ws?player=Hess"
    const data = {};
    
    let promise = getPlayer();
    async function getPlayer() {
        return await fetch(url).then((response) => response.text())
            .then((data) => {
                return data;
            });
        }

getPlayer().then((playerData) => {
// format data
  playerStats.push(playerData.replace(/\n/ig, ",").split(','));
  console.log(playerStats);

// Begin object generation
// names array shortened
let …
Run Code Online (Sandbox Code Playgroud)

javascript promise async-await fetch-api svelte

1
推荐指数
1
解决办法
7449
查看次数

标签 统计

async-await ×1

fetch-api ×1

javascript ×1

promise ×1

svelte ×1