【发布时间】:2021-04-08 22:08:49
【问题描述】:
请原谅我的理解不足,假设我的 gists 数组具有以下结构:
{
"description": 3,
"id": 123456,
"forks_url": "https:api.github.com..."
}
我需要获取用户的 gist 列表,还需要查询要呈现的每个 gist 的分支。我怎样才能使用Promise.all 或任何其他可能有帮助的库进行最少数量的异步 api 调用
我的意思是,我现在可以通过获取gists 并每次查询forks 来使用它,但它会进行很多我想避免的 API 调用。
const GistData = ({ username }) => {
React.useEffect(() => {
if (!username) {
return;
}
setState({ status: 'pending' })
octokit.request(`GET /users/${username}/gists`, username)
.then(
gists => {
setState({ gists: gists.data, status: 'resolved' })
},
error => {
setState({ error, status: 'rejected' })
}
);
}, [username]);
if (status === 'resolved') {
return gists.map(
gist => <GistCard key={gist.id} gist={gist} username={username} />
)
} else {
throw error
}
}
export default GistData
const GistCard = ({ gist, username }) => {
React.useEffect(() => {
if (!id) {
return;
}
setState({ status: 'pending' });
octokit.request(`GET /gists/${id}/forks`, id).then(
(forks) => {
setState({ forks: forks.data, status: 'resolved' });
},
(error) => {
setState({ status: 'rejected', error });
}
);
}, [id]);
if (status === 'resolved') {
return (
<div className="gist">
<p>{description}</p>}
<Tags fileList={files} />
{forks.length > 0 && (
<div>
<h3>Forks: ({forks.length})</h3>
{forks.map((fork) => (
<Fork key={fork.id} fork={fork} />
))}
</div>
)}
</div>
);
} else {
throw error
}
};
export default GistCard;
【问题讨论】:
标签: javascript reactjs async-await promise promise.all