在“请求”中调用模块的本地函数作为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.log , console.error或console.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); }); };