• 로그인
  • 장바구니에 상품이 없습니다.

home2 게시판 JavaScript, TS 게시판 async/await 질문드립니다.

async/await 질문드립니다.

4 글 보임 - 1 에서 4 까지 (총 4 중에서)
  • 글쓴이
  • #19235

    송송송
    참가자

    예제: <button>을 누르면 성공하는 Promise 만들기 

    이거를 해보고 있는데 궁금한 점이 있어서 질문드립니다.

    이렇게 했을때는 프로미스3이 정의되어 있지않다고 나오고

    이렇게 했을 때는 프로미스5가 정의되어 있지 않다고 나옵니다. 

    이건 당연히 프로미스3, 5가 없으니까 이해가 가는데 문제는

    프로미스4는 없는데, 콘솔창에서 오류가 나지않고, 버튼을 클릭했을 때 '성공했어요' 라는 문구가 출력됩니다.

    마찬가지로 프로미스4가 없으니 오류가 나야 하는게 아닌가요?  왜 실행이 되는지 모르겠습니다.

    어디서 문제가 발생한 것일까요

    #19238

    codingapple
    키 마스터

    모든 코드를 여기 복붙해주십시오 

    #19241

    송송송
    참가자

    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="UTF-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>Document</title>
      </head>
      <body>
        <button id="버튼">버튼이에요</button>
        <button>ㅇㅇㅇ</button>
        <script>
          let 프로미스2 = new Promise(function (resolve, reject) {
            document.addEventListener("click", function (e) {
              if (e.target.id == "버튼") {
                resolve("성공했어요");
              } else {
                reject("버튼이 아니에요");
              }
            });
          });

          async function 버튼판정() {
            try {
              let 결과 = await 프로미스4;
              console.log(결과);
            } catch {
              let 결과 = await 프로미스2;
              console.log(결과);
            }
            // let 결과 = await 프로미스3;
            // console.log(결과);
          }

          버튼판정();
        </script>
      </body>
    </html>

    다시해봐도 결과는 똑같네요

    #19310

    codingapple
    키 마스터

    버튼판정() 함수 안의 코드 실행되는 순서를 살펴보면

    1. try안의 코드를 실행합니다. 

    근데 프로미스4라는 변수가 없으니 그냥 쓰면 에러가 납니다.

    2. 에러가 나면 catch안의 코드를 실행합니다 

    catch안엔 프로미스2 기다리라고 되어있군요

    그래서 성공/실패 나길 계속 기다립니다 

    버튼 누르면 프로미스2가 성공하라고 코드를 짜놨습니다.

    그래서 버튼 누르면 (프로미스2가 성공하면) 다음 줄에서 성공결과를 console.log(결과); 이렇게 출력해줍니다

     

    그래서 성공했어요가 콘솔창에 출력됩니다 

     

     

4 글 보임 - 1 에서 4 까지 (총 4 중에서)
  • 답변은 로그인 후 가능합니다.

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠