我希望能够使用简单的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));
答案 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);
});