javascript callback multiple fifo queue

var callBackMethod = "hash";
/*
 * key 방식
 * 
 */
/*
 * var callbackKey = lbbCallBackHash.addCallBack('test122'); var callbackKey1 =
 * lbbCallBackHash.addCallBack('test1111122');
 * 
 * var callback1 = lbbCallBackHash.removeCallBack(callbackKey1); var callback =
 * lbbCallBackHash.removeCallBack(callbackKey);
 * 
 * 
 * console.log("key:"+callbackKey1+",callback:"+callback1);
 * console.log("key:"+callbackKey+",callback:"+callback);
 */
var lbbCallBackHash = (function(lbbCallBackHash, $, undefined) {
 // $ = jQuery임 전역번수를 지역변수로 전달하면 실행함수내에서 지역변수로 사용 //하기때문에 탐색작업이 좀더 빨라진다
 var callbacks;
 var keys;
 self.randomString = function(length) {
  var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz'
    .split('');

  if (!length) {
   length = Math.floor(Math.random() * chars.length);
  }

  var str = '';
  for ( var i = 0; i < length; i++) {
   str += chars[Math.floor(Math.random() * chars.length)];
  }
  return str;
 };
 lbbCallBackHash.push = function(callback) { // 외부 노출 함수 public
  var key = randomString(16);
  console.log(typeof keys);
  if (typeof keys == 'undefined')
   keys = [];
  if (typeof callbacks == 'undefined')
   callbacks = [];
  console.log(typeof keys);
  console.log(typeof callbacks);
  keys.push(key);
  callbacks.push(callback);
  return key;
 };
 lbbCallBackHash.pop = function(key) { // 외부 노출 함수 public
  var index;
  var callback;
  if ((index = keys.indexOf(key)) >= 0) {
   keys.splice(index, 1);
   callback = callbacks[index];
   callbacks.splice(index, 1);
  }
  return callback;
 };

 return lbbCallBackHash; // 리턴을 해야함
})(window.lbbCallBackHash || {}, jQuery); // 객체 없으면 생성
// fifo 방식
var lbbCallBackStack = (function(lbbCallBackStack, $, undefined) {
 // $ = jQuery임 전역번수를 지역변수로 전달하면 실행함수내에서 지역변수로 사용 //하기때문에 탐색작업이 좀더 빨라진다
 var callbacks;
 lbbCallBackStack.push = function(callback) { // 외부 노출 함수 public
  if (typeof callbacks == 'undefined')
   callbacks = [];
  callbacks.push(callback);
 };
 lbbCallBackStack.pop = function() { // 외부 노출 함수 public
  var index;
  var callback;
  if ((index = (callbacks.length - 1)) >= 0) {
   callback = callbacks[index];
   callbacks.splice(0, 1);
  }
  return callback;
 };

 return lbbCallBackStack; // 리턴을 해야함

})(window.lbbCallBackStack || {}, jQuery); // 객체 없으면 생성



댓글