无法使用回调获取值-javascript

无法使用回调获取值-javascript,javascript,Javascript,另一个答案似乎表明这应该有效(因此不是重复): 我试图能够在函数之外使用result对象。我使用了回调,但仍然有问题 exports.getArray = function(query, callback) { connection.query('SELECT ' + query + ' FROM table', function(err, result) { if (!err) { var array = []; for

另一个答案似乎表明这应该有效(因此不是重复):

我试图能够在函数之外使用result对象。我使用了回调,但仍然有问题

exports.getArray = function(query, callback) {
    connection.query('SELECT ' + query + ' FROM table', function(err, result) {
        if (!err) {
            var array = [];
            for (var i = 0; i < result.length; i++) {
                array.push({
                    id: result[i].id,
                });
            }
            callback(array);
            console.log('Retrieved Data');
        } else
            console.log('Error while retrieving data.');
    });
}
日志:

使用


concat
方法返回一个新数组。它不会修改调用它的数组

显示
console.log(data);//输出[]
立即运行,它不会等待回调函数更改此
data.concat(结果)至<代码>数据=结果“另一个答案似乎表明这应该有效(因此不是重复的)” — 你还说了什么?移动你的
console.log(数据)右下方的代码行
data.concat(结果)
并等待回调执行。您发布了相同的问题/代码,该问题/代码被搁置,因为该问题以前已得到回答。你看了链接的帖子了吗?你希望从再次提问中得到什么?这不是问题所在。移动
console.log(数据),这样它只能在得到结果后执行,但我需要使用回调函数外部的数据,而不仅仅是打印数据。如何使其同步以使其可用?能否在回调中移动依赖于数据的其他工作?另一种方法是,您可以将依赖于数据的代码放在另一个函数中,然后从回调函数中调用该函数,并将数据传递给它。我不确定我能保持这样。我将尝试第二种方法。
var data = [];
database.getArray('*', function(result) {
    //  console.log(result); //works
    data.concat(result); //need the result value 
});

console.log(data); // Outputs []
[{ 
    id: 71,
    author: 'catnip' 
 }, { 
    id: 78,
    author: 'cup49'
}]
data = result;
data = data.concat(result);