我可以等待异步步骤完成,然后返回?

时间:2013-12-23 02:20:04

标签: node.js

我是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();

但我无法得到结果。它似乎是异步步骤之前的函数返回。

我可以等待异步步骤完成,然后让函数返回吗?怎么办? 感谢..

2 个答案:

答案 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' });

它可以帮到你!