코드
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가 먼저 돌아서 탈출했을 걸요?? 이건 다시 테스트 해보겠습니다...ㅎㅎㅎ