我有以下调用,它需要一个令牌并进行 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 调用等到第一个令牌 API 调用获得响应并将其设置在地图中。
答案 0 :(得分:-1)
在 Map 中存储承诺:
if(!map[id])
map[id] = axios.post(/*...*/).then(/*...*/);
return map[id];