callback pattern - queue 와 recursion 을 이용한 직렬화 버닝!!

지금은 이미 async 의 시대라고 해도 좋을만큼 비동기가 대세지만
게으른 올드비들은 자기가 모른다는 이유만으로 별의별 이유를 들어 까대거나 
배우는 걸 회피하고자 해서
패턴별 파해법이 시급한 실정이다.
생각나는 대로 하나씩 올려볼셈.
대표적인게 다음과 같은 오징어 외계인 패턴이라고 할 수 있는데

var doQuery=function(query,callback) {
  console.log(query); // do something
  callback();
};

doQuery('insert a', function() {
  doQuery('insert b', function() {
    doQuery('insert c', function() {
      console.log('all done'); // end of transaction
    });
  });
});

실제로 database 를 다룰때 많이 부딪히는 패턴이다.
transactioin 에 올려놓고 한방에 commit 하면 되지 않냐라고 할꺼라면 나가줘(...)

(function serialize(query) {
  if(query.length) {
    doQuery(query.shift(0), function(result) {
      serialize(query);
    });
  } else {
    console.log('all done'); // end of transaction
  }
})(['insert a', 'insert b', 'insert c']);

파라메터를 큐에 넣고 하나씩 shift 로 빼면서 재귀.
꼭 javascript 가 아니라도 일반적으로 재귀와 배열이 가능한 어떤 언어라도 마찬가지.
더 좋은 패턴이 있으면 또 써볼란다.


덧글

댓글 입력 영역