Node.js中的同步不起作用?

时间:2015-07-16 04:23:54

标签: node.js

在我的代码中:

    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:显示命令未定义。

为什么我的变量listCategoryundefined

如何:listCategory result的{​​{1}} helper.categoryInMenu2

1 个答案:

答案 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'
});