Frontend practice/java script
JS await,async
판다꼬마
2022. 5. 19. 21:36
728x90
-async
async를 함수에 붙이면 promise를 리턴하는 비동기 처리 함수가 된다.
async를 붙여준 함수의 리턴값은 비동기 작업 객체 프로미스의 resovle의 결괏값이 된다.
async function helloAsync() {
return "hello";
}
helloAsync().then((res) => {
console.log(res);
})
console.log(helloAsync());
setTimeout()을 이용하여 3초 이후 출력하게 코드를 작성해보면
function delay(ms) {
return new Promise((resolve) => {
setTimeout(() => {
resolve();
}, ms);
});
}
async function hellosAsync() {
return delay(3000).then(() => {
return "hello Async";
});
}
3초후에 출력이 된다.
위의 코드가 너무 길다고 느껴지면 await를 사용하면 된다.
async function hellosAsync() {
return delay(3000).then(() => {
return "hello Async";
});
}
async function hellosAsync1() {
await delay(3000);
return "hello async";
}
위에 코드와 아래의 코드는 같은 내용이다.
await 비동기 함수 호출 앞에 붙이면
비동기 함수가 마치 동기 함수처럼 작동하게 된다.
await 키워드가 붙은 함수의 호출은 뒤에 있는 함수가 끝나기 전까지 아래에 있는 코드를 실행하지 않는다
await 줄에는 항상 동기적으로 작동하며
async키워드가 붙은 함수 내에서만 쓸 수 있다!
728x90