JavaScript函数返回节点js中未定义的值

我正在编写获取数据的代码。 首先我调用getsomedata函数来获取数据,并在里面getsomedata函数我打电话给另一个函数getRandomdata获取数据并返回到前一个函数,但它是返回undefined。 但在getRandomdata数据越来越。 在某处谈论使用callback。 我是新来的JavaScript。 请帮忙。 我的代码看起来像。

router.get('/get-data', function(req, res, next) { var result = getsomedata( some_parameter ); console.log(result); // recieving undefined res.send( result ); }); function getsomedata( some_parameter_recieved ) { var getsomedata = getRandomdata( random_params ); console.log (getsomedata); // recieving undefined return getsomedata; } function getRandomdata( random_params_recieved ) { // after some calculation console.log(random_data); // recieving prpper data return random_data; } 

       

网上收集的解决方案 "JavaScript函数返回节点js中未定义的值"

您应该使用callbacks ,而不是return ,因为在asynchronous操作中, return不会等待I/O操作完成。

尝试这个:

 router.get('/get-data', function(req, res, next) { getsomedata(some_parameter, function(result) { console.log(result); res.send(result); }); }); function getsomedata(some_parameter_recieved, callback) { getRandomdata(random_params, function(random_data) { callback(random_data); }); } function getRandomdata(random_params_recieved, callback) { // after some calculation callback(random_data); }