我是nodejs的新手,我写了这样一个函数:
function getResult(){
var result='';
//do something asynchronous,like query datebase and assign result
db.query(sql,function(err,res){
if(err) throw err;
result=res;
})
return result;
}
我跑吧
getResult();
但我无法得到结果。它似乎是异步步骤之前的函数返回。
我可以等待异步步骤完成,然后让函数返回吗?怎么办? 感谢..
答案 0 :(得分:0)
使用回调。这是javascript的核心概念之一。
function getResult(callback){
var result='';
//do something asynchronous,like query datebase and assign result
db.query(sql,function(err,res){
if(err) throw err;
callback(res);
})
}
将此功能与
一起使用getResult(function(res){
// do something
});
答案 1 :(得分:0)
这是一个简单的问题,但它在node.js中包含一个重要的概念。让我们看看这个: 你的代码:
function getResult(){
var result='';
//do something asynchronous,like query datebase and assign result
db.query(sql,function(err,res){
if(err) throw err;
result=res;
})
return result;
}
它的运行方式如下:首先,做
db.query (sql)
然后,它可能会
return result
直接。 因为当查询操作完成时,它将执行
function(err, res){ ...}
所以,你可能得到你想要的答案,但可能没有。 怎么解决这个问题?你可以像这样使用回调:
function getResult(callback){
db.query (sql, function(err, res){
if (err) throw err;
callback res;
});
}
getResult(function(result){ 'do something you like with result' });
它可以帮到你!