我在app.js文件中使用require()触发一个函数,返回的结果是'undefined'。我认为这是由于函数嵌套。返回嵌套值的最佳方法是什么。我尝试了下面的方法,但函数似乎是异步的,返回的值在提供数据之前返回为undefined。
app示例代码 -
app.get("/twitter/:handle", function (req, res) {
var handle = req.params.handle;
var twitter = require('./module/twitter');
var data = twitter.searchHandle(handle);
console.log(data);
res.sendStatus(data);
});
模块示例代码 -
var twitter = {
searchHandle: function(handle){
var dataToReturn;
T.get('search/tweets', { q: handle, count: 100 }, function(err, data, response) {
dataToReturn = data;
});
return(dataToReturn);
}
};
module.exports = twitter;
答案 0 :(得分:0)
searchHandle
是异步调用。返回dataToReturn
将始终未定义,因为其值尚未填充。您需要将回调函数传递给searchHandle
,以便在填充dataToReturn
后执行。
//app.js
var handle = req.params.handle;
var twitter = require('./module/twitter');
var data = twitter.searchHandle(handle, function (data) {
console.log(data);
res.sendStatus(data);
});
//twitter.js
var twitter = {
searchHandle: function(handle, callback){
T.get('search/tweets', { q: handle, count: 100 }, function(err, data, response) {
callback(data);
});
}
};
module.exports = twitter;