如何为全局模块范围初始化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;
}());
答案 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;