Как ждать данных от async / await debounced ax ios call - PullRequest
0 голосов
/ 20 июня 2020

Я пытаюсь вернуть отклоненный результат поиска из запроса API с использованием функции debounce loda sh, но продолжаю получать undefined из вызова.

Вот мой код, пожалуйста, помогите;

const searchSuggestionsRequest = async (input) => {
  const params = {
   userInput: encodeURIComponent(input),
  };
   const { data } = await axios.get(`${BASE_URL}/api/location`, { params });
  return data;
};

 const debouncedSuggestionsRequest = _.debounce(searchSuggestionsRequest, 500);

 const fetchSearchSuggestions = (input) => {

 return debouncedSuggestionsRequest(input);
};

handleSearchSuggestions = async (input) => {
  const searchObj = await fetchSearchSuggestions(input);
  console.log('searchObj', searchObj);

 };


handleSearchSuggestions()

1 Ответ

1 голос
/ 21 июня 2020

Вы ожидаете, что функция debounce вернет результат вашей исходной функции или, в вашем случае, разрешенное обещание. Но функция debounce работает не так.

Функция debounce оборачивает вашу функцию своим собственным кодом, в котором она проверяет, нет ли новых файлов вызовов в нашем каталоге. Через некоторое время ваша функция будет запущена. Но он не может вернуть результат этой функции.

Вам необходимо определить более глобальную область видимости (или, по крайней мере, область видимости, перекрывающую ваши функции), и установить эту переменную в вашей функции, где вы получаете ax ios результат.

Проблема остается в том, что вы не можете дождаться результата, поэтому ваш console.log все равно будет неопределенным. Лично я разрабатываю в Vue, и я могу установить наблюдатель реактивности для переменной.

...