javascript - 循环运行一个函数直到

标签 javascript

我目前正在尝试循环运行一个函数。
无法弄清楚,这是我尝试过的:

do {
  queryLastCursor(lastCursor).then(lastCursorResults => {
    if (lastCursorResults.hasNext = false) {
      hasNextPage = false;
    }
    console.log(hasNextPage);
  })
} while (hasNextPage);

queryLastCursor 是一个调用 API 的方法。当它返回数据时,它的值为 hasNext 如果它返回 false,那么我想将 hasNextPage 设置为 false。预期的行为是它一次又一次地运行该函数,直到我们得到结果 hasNext = false。知道我做错了什么吗?

最佳答案

如果你想在循环中执行异步过程,我建议递归地执行:

const runQuery = () => {
  queryLastCursor(lastCursor)
    .then(result => {
      if (result.hasNext) {
        // recursively call itself if hasNext is true 
        runQuery();
      }
    });
}

runQuery();

假设您想要返回一些数据,您可以这样做:

const runQuery = async (data) => {
  return queryLastCursor(lastCursor)
    .then(result => {
      if (!data) {
        data = [];
      }

      // assuming you are returning the data on result.data
      data.push(result.data);

      if (result.hasNext) {
        // recursively call itself if hasNext is true 
        return runQuery(data);
      }

      retun data;
    });
}

runQuery() 
  .then(data => {
    // data should be an array of all the data now
  });

关于javascript - 循环运行一个函数直到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59494598/

相关文章:

javascript - 删除列表项ReactJS

javascript - 同位素过滤是否可以很好地处理数百个项目和多个类别?

javascript - 如何修改与fineuploader中的上传请求相关的响应的正文内容?

javascript - 一张图一个文字游戏

javascript - KnockoutJS 绑定(bind)未使用可观察集合进行更新

javascript - .getElementById() 最初附加到什么对象?

javascript - 从对象中获取 javascript 中的数字键

javascript - JS( CoffeeScript )在 Rails 应用程序中不起作用

javascript - 当内联 block div 高度增长时防止内容流动

javascript - 使用 react-form POST 到 API?