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

时间:2015-10-12 11:58:04

标签: node.js async.js

我有以下代码

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);
});

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

2 个答案:

答案 0 :(得分:1)

我认为您只需在获得查询结果后调用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);
    }
);

答案 1 :(得分:0)

如果您使用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;
})()