почему axios не отменяет запрос? - PullRequest
0 голосов
/ 20 июня 2019

У меня есть этот метод поиска в функциональном компоненте реагирования, где при каждом нажатии клавиши я выполняю сетевой запрос.Я пытаюсь отменить предыдущий запрос, если немедленно выполняется новый.К сожалению, этот код не отменяет запрос.Может кто-нибудь объяснить мне, почему?

  let source
  async function search(inputValue) {
    // Check if we made a request
    if (source) {
      // Cancel the previous request before making a new request
      source.cancel('Operation canceled due to new request.')
    }
    // Create a new CancelToken
    source = axios.CancelToken.source()
    try {
      searchMovies(inputValue, { cancelToken: source.token }).then(filteredMovies => {
        dispatch({ type: "FILTERED_MOVIES", filteredMovies })
      })
    } catch (error) {
      if (axios.isCancel(error)) {
        // Handle if request was cancelled
        console.log("Request canceled", error.message)
      } else {
        // Handle usual errors
        console.log("Something went wrong: ", error.message)
      }
    }
  }

мои searchMovies реализации это:

export const searchMovies = async (query = "", options, page = 1) => {
  const { data = {} } = await axios(
    `https://api.themoviedb.org/3/search/movie?api_key=${process.env.REACT_APP_API_KEY}&language=en-US&query=${query}&page=${page}&include_adult=false`
    , { ...options })

  const formatedData = data.results.map(movie => {
    let title = movie.original_title || movie.original_name || movie.title || ""
    return {
      poster_path: `http://image.tmdb.org/t/p/w400/${movie.poster_path}`,
      title,
      id: movie.id
    }
  })

  return formatedData
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...