함수형코딩 441~454

빵동·2023년 5월 3일

함수형코딩 (완독)

목록 보기
24/29

안전하게 자원을 공유하는 방법

2가지의 비동기작업을 한 뒤 최종적으로 각각 공유 자원을 변경하는 경우 순서가 꼬이면 비즈니스 로직상에 문제가 생긴다.

좋은 타임라인은 다음과 같은 원칙을 가진다.
1. 타임라인은 적을수록 이해하기 좋다.
2. 타임라인은 짧을수록 이해하기 좋다.
3. 공유하는 자원이 적을 수록 이해하기 쉽다.
4. 자원을 공유한다면 서로 조율해야한다. 안전하게 공유한다 = 올바른 순서대로 자원을 쓰고 돌려준다.
5. 시간을 일급으로 다룬다.

큐를 이용해서 작업순서를 다룬다.

setTimeout(runNext,0)를 이용해서 runNext를 이벤트루프에 넣는다.

이벤트루프는 입력된 runNext를 실행한다.

function Queue(){ 
  var queue_item=[];
  var working = false;
  
  function runNext(){
   if (working){
     rerturn;
   }
   if (queue_item.length===0){
      return
   }
   working=true;
   var cart = queue_item.shift();
   calc_cart_total(cart, function(total){
    update_dotal_dom(total);
     working=false;
     runNext();
   }
  }
  return function(cart){
   queue_item.push(cart);
     setTimeout(runNext,0);
   }
}
  
  var update_total_queue = Queue();

0개의 댓글