javascript - 使用 Promise 减少 API 调用
问题描述
我有以下调用,它接受一个令牌并进行 API 调用并返回另一个令牌
export default (token, id) => {
if (map[id]) {
return Promise.resolve(map[id]?.token);
}
axios
.post(
`https://**********`,
{ id },
{
headers: {
Authorization: `Bearer ${token}`
}
}
)
.then(response => {
const { token } = response;
map[id] = {
...response,
};
return token;
});
};
第一次,我有 5-10 个 API 调用此方法,这使得单独的令牌 API 调用,因为在第一时刻,地图中没有设置任何内容。因此,在设置地图之前,会进行单独的令牌调用。我想减少令牌 API 调用的数量,即让所有 API 调用等到第一个令牌 API 调用得到响应并将其设置在地图中。
解决方案
将 Promise 存储在 Map 中:
if(!map[id])
map[id] = axios.post(/*...*/).then(/*...*/);
return map[id];
推荐阅读
- html - 显示数组中的 json
- php - TYPO3 Extbase - 如何从外部调用控制器操作
- c++ - 使用 pcap_inject 将数据包发送到 ip
- django - 在 Django docker 容器中运行 uWSGI 命令
- android - Xamarin OnPageFinished --- 获取 cookie
- javascript - 同步两个 div 的垂直滚动。(将两个 div 一起滚动)
- r - 强制控制台放弃打印
- cmd - 将列添加到 csv 文件中
- bash - Bash shell 脚本:递归地将文件夹中的 TXT 文件分类
- sql - INNER JOIN 中的多个条件