如何在Axios GET请求中组合异步和非异步选项

时间:2019-12-03 16:05:13

标签: javascript asynchronous axios token

我目前有一个正常工作的异步获取请求,如下所示:

export async function _default_options() {
  return {
    headers: {
      "Authorization": await getAuthToken(),
    },
  };
}

export const get = async function(url: string, _options: any) {
  const options = _options || await _default_options();
  return axios.get(url, options);
};

调用此GET函数(驻留在request.js中)的典型用法是:

requests.get(`${requests.API_ROOT()}acct_mgmt/users`)

您会看到,因为没有传递options,因为它会拾取_default_options,并且一切正常。

但是现在我希望将Axios Cancel令牌引入组合:

const signal = axios.CancelToken.source(); 
requests.get(`${requests.API_ROOT()}account_management/companies`, { cancelToken: signal.token })

很明显,我无法使用上面的代码,因为cancelToken仅替换了Auth令牌,该令牌不起作用。所以我需要将它们结合起来。但是_default_options的异步特性使我陷入循环。

您将如何解决将取消令牌和认证令牌结合在一起的问题?

罗伯特

1 个答案:

答案 0 :(得分:0)

我相信传递选项并将它们分布在默认值上是可行的,就像这样:

export async function _default_options(overrides:any={}) {
  return {
    headers: {
      "Authorization": await getAuthToken(),
    },
    ...overrides,
  };
}

export const get = async function(url: string, _options: any) {
  const options = await _default_options(_options);
  return axios.get(url, options);
};