Javascript 如何使两个console.log输出相同的值?

Javascript 如何使两个console.log输出相同的值?,javascript,callback,Javascript,Callback,此程序首先输出0,然后输出189。我知道这是由于javascripts异步执行的。使两个日志都输出的正确方法是什么?不进地狱 roaming = []; connection.query("SELECT land FROM roaming", function (err, res) { if (err) { console.log("Error: " + err); } else { res.forEach(function(entry){

此程序首先输出
0
,然后输出
189
。我知道这是由于javascripts异步执行的。使两个日志都输出的正确方法是什么?不进地狱

roaming = [];

connection.query("SELECT land FROM roaming", function (err, res) {
    if (err) {
        console.log("Error: " + err);
    } else {
        res.forEach(function(entry){
            roaming.push(entry.land);   
        });
        console.log(roaming.length);
    }
});
console.log(roaming.length);

在Javascript中,可以使用“回调函数”。这意味着函数可以作为参数传递。 例如:


所以您可以传递回调函数,比如hello('a',callback)

在Javascript中,可以使用“回调函数”。这意味着函数可以作为参数传递。 例如:


所以您可以传递回调函数,比如hello('a',callback)

我会使用async/await

async function asyncStuff() {  
  //async stuff  
}

await asyncStuff();

我会使用async/await

async function asyncStuff() {  
  //async stuff  
}

await asyncStuff();

这似乎是一个解决办法,我可能是这里的错。但这被认为是做这件事的标准方式吗?如果我有一个函数需要两个SQL调用的值呢。然后我需要在我的回调中添加一个回调?这似乎是一个解决方法,我可能是这里的错。但这被认为是做这件事的标准方式吗?如果我有一个函数需要两个SQL调用的值呢。那么我需要在我的回调中添加一个回调?你不能得到相同的回调
connection.query()
是一个异步函数。您的第二个
console.log()
立即运行,它不能等待它完成。这就是异步函数有回调的原因。你不能得到相同的回调
connection.query()
是一个异步函数。您的第二个
console.log()
立即运行,它不能等待它完成。这就是异步函数有回调的原因。