首页 > 解决方案 > 使用 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 调用得到响应并将其设置在地图中。

标签: javascriptpromise

解决方案


将 Promise 存储在 Map 中:

 if(!map[id])
   map[id] = axios.post(/*...*/).then(/*...*/);
 return map[id];

推荐阅读