我目前正在尝试编写一个简单的小节点模块,以便更轻松地访问API。我遇到的问题是我希望能够致电
var randomVar = myModule.function()
并将该函数的输出分配给变量。我认为它就像返回有问题的值一样容易,但randomVar保持不确定,我在这里明显遗漏了一些东西。
这是我的HTTP请求,似乎相当标准:
exports.function = function(){
var options = {
// stuff
};
fetchResult = function(options,callback){
var http = require('http');
var str = '';
http.get(options,function(res){
res.on('data',function(chunk){
str += chunk;
});
res.on('end',function(){
callback(JSON.parse(str));
});
}).on('error', function(e){
callback(e.message);
});
}
fetchResult(options,function(data){
console.log(data);
// what do I do here?
});
}
底部的console.log输出我想要的数据,但我究竟能做些什么才能将它分配给模块外的变量?
提前非常感谢你。
答案 0 :(得分:2)
嗯,您尝试返回的函数是异步函数,因此在使用该变量之前,您必须等待操作完成。这就是回调的来源!
在exports.function
添加名为callback
exports.function = function (callback) {
callback
是将使用您的数据的功能!所以,从fetchResult
运行:
callback(data);
现在您可以调用并使用此功能:
myModule.function(function(data) {
//console.log(data); //the data you want!
});