Javascript 使用promise减少API调用
我正在进行下面的调用,它接受一个令牌并进行一个API调用并返回另一个令牌Javascript 使用promise减少API调用,javascript,promise,Javascript,Promise,我正在进行下面的调用,它接受一个令牌并进行一个API调用并返回另一个令牌 export default (token, id) => { if (map[id]) { return Promise.resolve(map[id]?.token); } axios .post( `https://**********`, { id }, { headers: { Authorization:
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调用得到响应并在映射中设置它。将承诺存储在映射中:
if(!map[id])
map[id] = axios.post(/*...*/).then(/*...*/);
return map[id];
const-token=(等待axios.post(…).data代码>。当前返回令牌
将令牌返回到。。。什么都没有(除了“then”回调,它不做任何事情)if(map[id])
您返回一些内容,否则不返回任何内容。