javascript - 在其内部调用相同的 Promise

标签 javascript promise

仍在努力理解 promise 及其运作方式。我正在查询 Google 网站管理员 API 以返回搜索分析数据。我已经设置了一个 promise ,如果我调用它一次,它就会返回数据,但是我需要根据前一个结果再次调用它。

例如:

startRow = 0;
data = [];

Query(startRow).then((results) => {
  if (results != null) {
    data.push(results)
    startRow++;
    // RUN SAME QUERY AGAIN
  };
});

如果 Promise 返回数据,则 startRow 需要增加 1,然后调用相同的 Promise(使用更新的 startRow)。这是可能的还是我完全错误地看待这个问题?

最佳答案

您不能多次调用同一个 Promise,只能创建新的 Promise。

startRow = 0;
data = [];

function startQuery() {
    // Generally a good idea to always return Promises,
    // so you can chain them if needed
    return Query(startRow).then(processResults);
}

function processResults(results) {
    if (results == null) return;

    data.push(results);
    startRow++;
    return startQuery();
};

startQuery();

或者,以更紧凑的方式:

startRow = 0;
data = [];

function startQuery() {
    return Query(startRow).then((results) => {
        if (results == null) return;

        data.push(results);
        startRow++;
        return startQuery();
    });
}

startQuery();

关于javascript - 在其内部调用相同的 Promise,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50156008/

相关文章:

javascript - 如何仅使 Ember 路线模型的一部分成为 promise ?

javascript - 在 Angularjs 中对基于 Promise 的代码进行单元测试

promise - save() 完成前的 Sequelize 回调

javascript - Rails 5,等待/加载屏幕,直到模型准备好

javascript - 函数中的 Getters 和 Setters (javascript)

javascript - 在 node.js 中更新查询

javascript - 控制 React 组件渲染的顺序

javascript - 函数返回 undefined object

javascript - 哪个事件应该用于按钮?

javascript - 在 TypeScript 中使用 async/await 进行方法链接