在“请求”中调用模块的本地函数作为callback

在我的主要代码中,我执行以下操作:

var module = require('./module') module.FooA(module.FooB); 

module.js包含下面的代码:

 var request = require('request'); //using of npm "request" exports.FooB = function(data){ /*operations on data here*/ }; exports.FooA = function(callback){ var url = some_link; request(url, function (error, response, body) { if (!error && response.statusCode == 200) { callback(body); }; }); }; 

问题是显然,即使条件满足, callback(body)也不运行。 var result = request(url)后跟exports.FooB(result)做这个工作,但据我所见,显然不会像callback一样行事,会产生麻烦。

在这种情况下定义callback函数的正确方法是什么? 我是否需要,或者它实际上是同步的,我错过了注意到它?

使用带有错误的第一个函数callback参数,这是node.js核心中的默认值,对于您的项目函数是google。

和@ShanSan一样推荐,使用console.logconsole.errorconsole.trace进行debugging。

例:

 var request = require('request'); //using of npm "request" exports.FooB = function(error, data){ /*operations on data here*/ }; exports.FooA = function(callback){ var url = some_link; request(url, function (error, response, body) { if (error || response.statusCode != 200) { // pass error to callback and if use return you dont need other code block bellow console.error('Error in request', error); return callback(error, null); } // here run if dont have errors // if need more info use the console.log(request); or console.log(body); // use error in first param in callback functions callback(null, body); }); };