/*
* 非同步管理器
* author : jser.me
*
* 使用方法:
;
* asyncMg
* .push(function( next ){
* ....
* 並為);
* })
* })
* .push(function( next ){
* ....
* next( );
* })
* })
* ', function() {
* allThings_is_down();
* });
*
*
function typeOf( obj ){
return Object.prototype.toString.call( obj ).match(/[object ([^]]*)]/)[1];
}
function AsyncManager( arg ){
this.execArrys = []; this.push( arg );}
}
}
//使用系統帶的繼承方法
require('util').inherits( AsyncManager, require('events').EventEmitter );
//標記成功運行的函數數目
AsyncManager.prototype.succCount = 0;
//加入AsyncManager.prototype.push = function( arg ) {
var This = this; if( typeOf(arg) == 'Array' ){ });
} else {
}
return this; //連結一個
};
//執行
AsyncManager.prototype.run = function(){
var self = this;
if( this.succCount == this.execArrys.length ) { ;
} else {
this.execArrys[ this.succCount ]( self.run.bind( self ) ); }
this.succCount ;
return this; //連結一個};
exports = module.exports = function( arg ){
return new AsyncManager( arg );
}