使用节点模块的返回值作为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! });