我目前正在尝试编写一个简单的小 Node 模块,以便更轻松地访问 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 输出了我想要的数据,但是我到底该怎么做才能将其分配给模块外部的变量?
提前非常感谢您。
最佳答案
嗯,您尝试返回的函数是一个异步函数,因此您必须等待操作完成才能使用该变量。这就是回调发挥作用的地方!
在您的exports.function
中添加一个名为callback
的参数
exports.function = function (callback) {
callback
是将使用您的数据的函数!因此,从 fetchResult
运行:
callback(data);
现在您将调用并使用此函数:
myModule.function(function(data) {
//console.log(data); //the data you want!
});
关于node.js - 使用 Node 模块的返回值作为变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22338657/