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

标签 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 函数(位于 requests.js 中)的典型用法如下:

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

您可以看到,由于没有传入任何选项,因此它会选择_default_options并且一切正常。

但现在我希望将 Axios Cancel token 引入其中:

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

显然我不能使用上面的代码,因为这样 cancelToken 只是替换了 Auth token ,这是行不通的。所以我需要将它们结合起来。但 _default_options 的异步性质让我陷入了困境。

您将如何解决组合取消 token 和身份验证 token 的问题?

罗伯特

最佳答案

我相信传递选项并将它们分布在默认值上应该可行,如下所示:

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);
};

关于javascript - 如何在 Axios GET 请求中组合异步和非异步选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59161027/

相关文章:

javascript - amcharts (v3.x) 图表上的日期格式问题

javascript - jQuery 更改元素内元素的属性

node.js - 在 Node.js 中使用流作为异步队列的输入,如何确保queue.drain仅被调用一次

c# - 系统反射 .Invoke() 无法捕获异步调用方法内的异常

javascript - 如何使用 Axios 将 JWT 存储在 cookie 中?

reactjs - React.js 页面刷新后,Axios 默认 header 被清除

javascript - 我应该如何使用带 Angular 灯箱

javascript - JavaScript 问题会破坏浏览器吗?

.net - 异步记录到数据库 .Net

javascript - API 调用主体有效负载的 Axios 实例(为所有 API 创建通用对象)