从回调中返回值

时间:2016-03-02 21:01:48

标签: javascript node.js callback

我希望能够使用简单的var myVar = myFunction()设置变量;但myFunction内部有一个回调函数,因此无法返回值。我有点失去了如何转换此代码以便能够从回调中返回一个值,以便我可以保留简单的变量定义。

function createJSON(value){
    var lat_lng = value.toString().replace('(', '').replace(')', '').split(',');
    return {'address': addressInput.value, 'lat': lat_lng[0], 'lng': lat_lng[1]};
}

createJSON((1234.56, 123.456789));

1 个答案:

答案 0 :(得分:3)

你不能。 AJAX请求是异步,并且它们的回调在请求完成之前不会运行。这将是getTheData()功能完成之后的未来。

您需要重新构建代码。一旦数据准备就绪,你可以传递getTheData()一个回调来运行,但你不能让它返回

function getTheData(callback) {
  var data = '';
  var options = {
    host: 'google.com',
    port: 80,
    method: 'GET'
  }

  http.request(options, function(res) {
    res.on('data', function (chunk) {
       data += chunk;
    });
    res.on('end', function(){
      console.log("DATA: " + data);
      if(typeof callback === 'function'){
        callback(data);
      }
    });
  }).end();

}

然后你可以这样做:

getTheData(function(myHappyVar){
  console.log(myHappyVar);
});