执行所有查询后如何发送结果

How to send result after executing all queries

我有以下代码

var data=[];
var i = 0,
    j = 9;

async.whilst(function () {
    return i <= j;
}, function (next) {
    connection.query('select * from table', function (err,rows, field) {
        data.push(rows.length);
        console.log(data);
    });

    i++;

    next();
}, function (err) {
    console.log(data);
});

我想先执行查询,然后 return 结果。我该怎么办。我也用简单的 for 循环完成了但不起作用。

我想你只需要在得到查询结果后调用next():

var data = [];
var i = 0;
var j = 9;

async.whilst(
    function () { return i <= j; },
    function (next) {
        i++;

        connection.query('select * from table', function(err, rows, field) {
            data.push(rows.length);
            console.log(data);
            next();
        });
    },
    function (err) {
        console.log(data);
    }
);

如果您使用 babeljs

,这是 async/await 的另一个简单解决方案
(async function() {
    let data = [];
    let i = 0;
    const j = 9;

    while (i <= j) {
        let length = await new Promise((resolve, reject) => {
            connection.query('select * from table', function(err, rows, field) {
                if (err) return reject(err);
                resolve(rows.length);
            });
        });

        data.push(length);
    }

    return data;
})()