使用节点模块的返回值作为variables?
我目前正在尝试编写一个简单的小节点模块,使其更容易访问API。 我遇到的问题是我希望能够打电话
var randomVar = myModule.function()
并将该函数的输出分配给variables。 我相信这很容易返回值,但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输出我想要的数据,但是我怎样才能将它分配给模块外部的variables呢?
非常感谢你提前。
那么你试图返回的函数是一个asynchronous函数,所以在使用这个variables之前,你必须等待操作完成。 这是callback进来的地方!
在你的exports.function
添加一个名为callback
的参数
exports.function = function (callback) {
callback
是将使用您的数据的function! 所以,从fetchResult
运行:
callback(data);
现在你可以调用并使用这个函数:
myModule.function(function(data) { //console.log(data); //the data you want! });