在我的代码中:
var Helper = require('./helper.js');
var helper = new Helper();
var Crawler = function(){
var me = this;
this.getListCategory = function(){
var listCategory = helper.categoryInMenu(1, function(err, result){
console.log(result); //1. display command : object
return result;
});
console.log(listCategory); //2. display command : undefined
}
}
module.exports = Crawler;
在1:显示命令是对象。
在2:显示命令未定义。
为什么我的变量listCategory
是undefined
?
如何:listCategory
result
的{{1}} helper.categoryInMenu
是2
?
答案 0 :(得分:0)
您希望同步使用方法getListCategory
,但在结果categoryInMenu
方法返回时,您的方法getListCategory
将会完成,因为categoryInMenu
方法将会异步执行,因此您无法使用return
。
因此,要从getListCategory
返回结果,您可以使用回调:
var helper = {
categoryInMenu: function(number, cb) {
setTimeout(function() {
cb(null, 'list category');
}, 2000);
}
};
var crawler = {
getListCategoryMenu: function(cb) {
helper.categoryInMenu(1, function(err, result) {
cb(err, result);
});
}
};
crawler.getListCategoryMenu(function(err, result) {
console.log(result); // outputs: 'list category'
});