# api.js
exports.getData = function(req, res) {
request({uri: 'api.example.com', headers: HEADERS}, function(error, response, body) {
if(!error && response.statusCode == 200) {
res.send(body); // body 是 JSON 数据.
}
else {
res.send(error);
}
});
};
# app.js
router.get('/xxx', function(req, res){
var data = api.getData(req, res);
//var data_obj = JSON.parse(data);
console.log(data);
});
在 app.js 里调用 getData 函数,此时 data 的返回值为 undefined!
试验方案二: 把它改为一般的函数调用形式,
# api.js
exports.getData = function() {
return request(..., function(){
return body;
});
};
# app.js
router.get('/xxx', function(req, res){
var data = api.getData();
//var data_obj = JSON.parse(data);
console.log(data);
});
此时的 data 返回值为 http 协议相关的信息,并不是我期望的 request 返回值 body.
请问:
- 怎样正确获取到 getData 函数的返回值?
- 请解释下为什么 data 返回值为 undefined ?
- 这个问题涉及到 JS 的哪个知识点?JS 回调函数机制? 望各位提点一下,我去查阅相关知识点。
谢谢。