javascript - 如何等待来自 async/await 去抖 axios 调用的数据

标签 javascript async-await axios lodash

我尝试使用 lodash 的去抖函数从 API 请求返回去抖搜索结果,但始终从调用中获取 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()

最佳答案

您期望 debounce 函数返回原始函数的结果,或者在您的情况下返回已解决的 promise 。但这不是去抖动功能的工作原理。

debounce 函数用自己的代码包装您的函数,在其中检查我们的 not 中是否有任何新的调用文件。经过一定时间后,您的功能最终会启动。但它无法返回该函数的结果。

您需要定义一个更全局的作用域(或者至少是一个与您的函数重叠的作用域)变量,并在您获取 axios 结果的函数中设置该变量。

您的问题仍然是您无法等待结果,因此您的 console.log 仍然是未定义的。我个人是在 Vue 中开发的,我可以在变量上设置 react 性观察器。

关于javascript - 如何等待来自 async/await 去抖 axios 调用的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62491317/

相关文章:

php - 类型错误 : "Cannot convert string to ByteString because the character at index 519 has value 8230 which is greater than 255."

javascript - 变量在 youtube 搜索 api 函数之外未定义

javascript - 如何使箭头函数异步?

javascript - 不想在 Controller 中公开 $http

javascript - 如何通过javascript使用自定义过滤器(selectCheckboxMenu)保存和恢复primefaces数据表的过滤器状态?

javascript - 使用 Promise.all 通过 Puppeteer 实现某种多线程

javascript - 使用 axios 将 csv 从前端发送到后端

javascript - 在 React Redux 中实现的获取操作返回 : "Cannot read property ' title' of undefined"

javascript - 如何修复: 'Cannot read property ' then' of undefined'

javascript - 展平路线树