const delay = (wait, callback) => {
setTimeout(callback, wait);
}
const sleep = (wait) => {
return new Promise((resolve) => {
setTimeout(resolve, wait);
});
}
1. callback함수
function runCallback() {
resetTitle(); //1. 제목 초기화
playVideo(); //1. 비디오 재생
delay(1000, () => {
pauseVideo(); //2. 1초 후, 비디오 멈춤
displayTitle(); //2. 비디오멈추고, 제목 표시
delay(500, () => {
highlightTitle(); //3. 0.5초 후, 제목 강조
delay(2000, resetTitle); //2초 후, 제목 초기화
});
});
}
2. Promise
function runPromise() {
resetTitle(); // 1. 제목 초기화
playVideo(); // 1. 비디오 재생
sleep(1000)
.then(() => {
pauseVideo(); // 2. 1초 후, 비디오 멈춤
displayTitle(); //2. 제목 보여줌
})
.then(sleep.bind(null, 500)) // 3. sleep(500). 0.5초 쉰다.
//첫번째 인자를 500으로 고정시킨다는 말. 즉, sleep함수의 인자를 500으로 준다.
.then(highlightTitle) // 3. 0.5초 쉰 후 제목 강조
.then(sleep.bind(null, 2000)) // 4.2초 쉰다.
.then(resetTitle) //4. 2초 쉰 후, 제목 초기화
}
3. async & await
const delay = (wait, callback) => {
setTimeout(callback, wait);
}
const sleep = (wait) => {
return new Promise((resolve) => {
setTimeout(resolve, wait);
});
}
async function runAsync() {
resetTitle(); //1. 제목 초기화
playVideo(); //1. 비디오 재생
await sleep(1000); //2. await 다음에는 Promise객체가 와야. 1초 쉼.
pauseVideo(); //2. 비디오 멈춤
displayTitle(); //2. 제목 보여줌
await sleep(500); //3. 0.5초 쉼
highlightTitle(); // 3. 제목 강조
await sleep(2000); //4. 2초 쉼
resetTitle(); //4. 제목 초기화
}
'JavaScript' 카테고리의 다른 글
part3 (0) | 2021.09.21 |
---|---|
fetch() API (0) | 2021.09.21 |
타이머 API ( setTimeout, setInterval, clearInterval) (0) | 2021.09.19 |
비동기 함수의 순서를 제어하는 방법 3. async & await (0) | 2021.09.19 |
비동기함수의 순서를 제어하는 방법 2. Promise (0) | 2021.09.19 |