ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Javascript] 비동기 홀짝 문제
    Javascript 2024. 4. 15. 15:28

    50% 확률로 ‘홀’ 또는 ‘짝’을 반환하는 비동기 작업이 있습니다. 이를 세 번 연속으로 사용하여 그 결과를 쉼표로 구분한 문자열로 받아오려 합니다. 예를 들면 ‘홀, 짝, 홀’, ‘짝, 짝, 홀’과 같은 결과가 3초 후 출력되는 것입니다. 이와 같은 작업을 콜백이 중첩된 코드로 작성해보세요.

     

    function getOddEven(callback){
      setTimeout(() => {
        const res = Math.random() < 0.5 ? '홀' : '짝';
        callback(res);
      }, 1000);
    };
    
    function concatRes(callback){
      getOddEven((res1) => {
        getOddEven((res2) => {
          getOddEven((res3) => {
            const finalRes = res1 + ',' + res2 + ',' + res3;
            callback(finalRes);
          });
        });
      });
    }
    
    concatRes((res) => {
      console.log(res);
    });

     

     

    function getOddEven(){
      return new Promise((resolve) =>{
        setTimeout(()=>{
          const res = Math.random() < 0.5 ? '홀':'짝';
          resolve(res);
        }, 1000);
      });
    }
    
    function concatRes(){
      let finalRes = '';
      
      return getOddEven()
        .then(res1 => {
          finalRes += res1;
          return getOddEven();
        })
        .then(res2 => {
          finalRes += ',' + res2;
          return getOddEven();
        })
        .then(res3 => {
           finalRes += ',' + res3;
           return finalRes;
        });
    }
    
    concatRes().then(res => {
      console.log(res);
    })

     

    function getOddEven(){
      return new Promise((resolve) =>{
        setTimeout(()=>{
          const res = Math.random() < 0.5 ? '홀':'짝';
          resolve(res);
        }, 1000);
      });
    }
    
    async function concatRes(){
      const res1 = await getOddEven();
      const res2 = await getOddEven();
      const res3 = await getOddEven();
      
      return res1 + ',' + res2 + ',' + res3;
    }
    
    async function execute(){
      const res = await concatRes();
      console.log(res);
    }
    
    execute();

    'Javascript' 카테고리의 다른 글

    [Javascript] async & await  (0) 2024.04.11
    [Javascript] 프로미스  (1) 2024.04.11
    [Javascript] 비동기식 프로그래밍  (0) 2024.04.10
    [Javascript] 프로토타입과 상속  (0) 2024.04.10
    [Javascript] Prototype 프로토타입  (0) 2024.04.09
Designed by Tistory.