首页 > 解决方案 > 如何在循环中调用后续回调?

问题描述

在我的 Nodejs 应用程序中,我需要通过一些查询从数据库中选择一组数据。开始时未定义大量查询,我需要在每个数据库查询后检查是否需要进行另一个查询。所以像这样的过程

var total_result = [];
var n = 0;
db.query('.....query...', function(result, error){
    // Callback with db data response
    total_results.push(...result...);
    n += result.length;

    if (n < req_n) {
        // ... Here is the code to repeat the same query ...
        // ?????
    }
});

谢谢你。

标签: node.jsloopsfor-loopforeachcallback

解决方案


var total_result = [],
    n            = 0

while(await query())

async function query() {
  return new Promise((resolve, reject) => {

    db.query('...query...', (result, error) => {
      if(error) reject(error)
      // Callback with db data response
      total_results.push(...result...)
      n += result.length

      if (n < req_n) resolve(true)
      else resolve(false)
   })
  })
}

推荐阅读