如何在模块模式中初始化

时间:2013-12-22 17:53:16

标签: node.js async.js

如何为全局模块范围初始化async.queue? 下面的示例显示了主要问题,qq未定义,尚未知道或仅在函数范围内本地定义。

目标是访问不同模块成员函数中的“module-global”q。 因此,在https://github.com/caolan/async#queue

中创建示例的模块模式版本

我知道为什么// not working - 代码无效,它只是显示我尝试过哪些声明提示。

另外我知道如何通过使用不同的模式来解决问题,但这不会回答问题。

 var mymodule = (function() {
    'use strict';

    var async = require('async');
    // var  q = async.queue(mymodule.qq); // not working 
    // var q ; // not working 
    var mymodule = {

        // q = async.queue(this.qq); // not working
        init: function() {
            // var q = async.queue(this.qq); // local not global
            // q = async.queue(this.qq); // not working
            q.drain = function() {
                console.log('all items have been processed');
            }
        },

        add: function(task) {
            this.q.push(task);
        },

        qq: function(task, callback) {
            console.log(task);
            callback();
        },

    };
    return mymodule;
 }());

1 个答案:

答案 0 :(得分:1)

'use strict';
var async = require('async');
var mymodule = function(){

//This will be you constructor
//You can do something like this
  this.queue = async.queue(function(task, callback){
    console.dir(task);
  }, 4);
};
//Now start adding your methods
mymodule.prototype.add = function(task){
  this.queue.push(task, function(){});
};

mymodule.prototype.qq = function(task, callback){
// ..
callback()
};
//export it

module.exports = mymodule;