我目前有一个正常工作的异步获取请求,如下所示:
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
的异步特性使我陷入循环。
您将如何解决将取消令牌和认证令牌结合在一起的问题?
罗伯特
答案 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);
};