无法将 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() })()
我有一个 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() })()