我目前有一个正常工作的异步获取请求,如下所示:
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/