保持每 2.5 秒调用一次 API,并在达到预期结果后关闭调用

a24*_*918 0 javascript setinterval async-await

我有一个 API 每 2.5 秒调用一次。最初,响应对象内的数据为空,因为数据库仍在通过事务对其进行更新。但是在随后的第 3 次或第 4 次尝试中,我得到了数据。我正在为此编写一个可重用的函数,但是我没有定义。我的目标是继续调用 API,直到我获得路径中的值并关闭连接。请指教。

PS:下面的 API URL 没有任何延迟,但我的私有 API 有。

const getData = (url, path) => {
  const interval = setInterval(async () => {
    const result = await axios.get(url);
    if (_.has(result.data, path) && result.data[path]) {
      return result[path]
    }
  }, 2500)
  return clearInterval(interval)
}

getData('https://api.oceandrivers.com/static/resources.json', 'swaggerVersion')
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.js"></script>
Run Code Online (Sandbox Code Playgroud)

JS小提琴网址

请指教。

ble*_*lex 5

return clearInterval(interval); // undefined
Run Code Online (Sandbox Code Playgroud)

如果您想返回一个在数据可用时解析的 Promise,您可以执行以下操作:

return clearInterval(interval); // undefined
Run Code Online (Sandbox Code Playgroud)