cancelToken внутри перехватчика запроса Axios - PullRequest
0 голосов
/ 06 декабря 2018

Я пытаюсь использовать cancelTokens так, чтобы мне не приходилось писать это более одного раза в моем коде.

Я думал о чем-то таком, но это не работает:

let sources = {}

const getCustomAxios = () => {

  const customAxios = axios.create({
    baseURL: '/v1/',
    params: { format: 'json' },
    transformRequest: [snakizeRequest, ...axios.defaults.transformRequest],
    transformResponse: [...axios.defaults.transformResponse, camelizeResponse],
    paramsSerializer: (params) => qs.stringify(params, {arrayFormat: 'brackets'}),
    headers: { 'Authorization': 'JWT ' + getToken() }
  })

  customAxios.interceptors.request.use(function (config) {
    if (sources[config.url] != undefined) {
      sources[config.url].cancel()
      console.log('cancelled')
    }
    else {
      console.log('first')
    }
    // Do something before request is sent
    sources[config.url] = axios.CancelToken.source()
    config.cancelToken = sources[config.url].token
    return config
  })

  return customAxios
}

Я полагаю, что подобные проблемы приводят к следующим проблемам:

config.cancelToken = sources[config.url].token

Как мне решить эту проблему?

Большое спасибо!

...