[Cypress] async/await가 안 먹는 then에서 Promise로 함수 return 시키기

쿼카쿼카·2023년 3월 4일
0

코드

function termValidation(type = 'term') {
  return new Promise((resolve) => {
    let startDate, endDate;

    if (type === '직접입력') {
      cy.get(':nth-child(1) > .dp__main > [aria-label="Datepicker input"] > .dp__input_wrap > .dp__pointer')
        .invoke('val')
        .then((sDate) => {
          startDate = sDate;
          cy.get(':nth-child(3) > .dp__main > [aria-label="Datepicker input"] > .dp__input_wrap > .dp__pointer')
            .invoke('val')
            .then((eDate) => {
              endDate = eDate;
              resolve([startDate, endDate]);
            });
        });
    } else {
      cy.get(':nth-child(1) > .dp__main > [aria-label="Datepicker input"] > .dp__input_wrap > .dp__disabled')
        .invoke('val')
        .then((sDate) => {
          startDate = sDate;
          cy.get(':nth-child(3) > .dp__main > [aria-label="Datepicker input"] > .dp__input_wrap > .dp__disabled')
            .invoke('val')
            .then((eDate) => {
              endDate = eDate;
              resolve([startDate, endDate]);
            });
        });
    }
  });
}

원래 코드

  • 함수 내에서 변수를 선언
  • then을 이용해 값 할당
  • 변수들 return
  • 결과 undefined 나옴...
  • 비동기 때문이구나 싶어서 async await 활용(나도 이제 비동기 따위 쉽게 해결하는 고수인가?)
  • undefined....
  • then 안에 return을 넣으면 되잖아!!(이제 js를 가지고 노는 능력도 생ㄱ)
  • return 했으니까 then 콜백함수만 탈출시켜줄게 ㅎㅎㅎ 함수 결과는 undefined야~~

Promise 활용

  • 일단 시작날짜 then안에 또 마감날짜 then을 넣고 마지막에 resolve를 해준다!!
  • 만약 똑같이 따로 then 해주고 마지막에 resolve 해줬으면 resolve가 먼저 돌아서 탈출했을 걸요?? 이건 다시 테스트 해보겠습니다...ㅎㅎㅎ
profile
쿼카에요

0개의 댓글