无法将 API 数据从 fetch 分配给函数中的变量

Can't assign API data from fetch to variable in function

我有一个 JS 模块,它是一个从我们公司 Github 获取问题数据的函数,然后我想将其分配给一个变量:

import { request } from "https://cdn.skypack.dev/@octokit/request";

let issueData

async function getIssues() {
    const issueAPI = await request("GET repos/{owner}/{repo}/issues", {
        baseUrl: "https://company.com/api/v3/",
        owner: "me",
        repo: "exampleRepo",
    });

    window.issueData = issueAPI.data
    return issueAPI.data
}

export { getIssues, issueData }

我似乎无法将 issueAPI.data 分配给我的变量 issueData?这里出了什么问题?我觉得这与 promises/async 或范围有关,但无法解决。

您正在将 issueAPI.data 分配给名为 issueData 的 window 变量,该变量与您在代码段中使用 let 定义的变量不同。如果你想分配给你声明的变量,你只需要这样做。

let issueData = await getIssues()

如果函数中没有其他错误,这应该正确地将您想要的分配给声明的变量。

你也可以删除 window.issueData = issueAPI.data 除非你真的想从 window 对象访问它。

编辑:正如 Jeremy 指出的那样,这需要顶级等待。 Jeremy 也提供了一个解决方法:

let issueData
( async () => { issueData = await getIssues() })()