# Javascript Async return Promise For await
# Javascript Async return Promise For await
by jihoon kim
HTML
<h1>Javascript Async return Promise For await</h1>
<pre id="contents">
# async function ==== ==== ==== ==== ==== ==== ==== ==== ==== ====
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Statements/async_function
■ async function 선언은 AsyncFunction객체를 반환하는 하나의 비동기 함수를 정의한다.
또한 async function expression을 사용해서 async function을 선언할 수도 있다.
async function name([param[, param[, ... param]]]) {
statements
}
- asnyc/await 는 비동기 코드를 작성하는 새로운 방법이다.
이전에는 비동기코드를 작성하기 위해 callback이나 promises를 사용해야 했다.
- async 함수에는 await식이 포함될 수 있습니다.
이 식은 async 함수의 실행을 일시 중지하고 전달 된
Promise의 해결을 기다린 다음 async 함수의 실행을 다시 시작하고 완료후 값을 반환합니다.
- async 함수내에 await가 유효합니다.
- async 함수의 본문 외부에서 사용하면 SyntaxError가 발생합니다.
■ Syntax
async function name([param[, param[, ... param]]]) {
statements
}
: 매개변수
:: name : 함수의 이름.
:: param : 함수에게 전달되기 위한 인자의 이름.
:: statements : 함수본문을 구성하는 내용.
: 반환 값
:: Promise
async 함수에 의해 반환 된 값으로 해결되거나 async함수 내에서 발생하는 캐치되지 않는 예외로 거부되는 값.
■ 목적
async/await함수의 목적은
사용하는 여러 promise의 동작을 동기스럽게 사용할 수 있게 하고,
어떠한 동작을 여러 promise의 그룹에서 간단하게 동작하게 하는 것이다.
promise가 구조화된 callback과 유사한 것 처럼
async/await또한 제네레이터(generator)와 프로미스(promise)를 묶는것과 유사하다.
ex)
function resolveAfter2Seconds(x) {
return new Promise(resolve => {
setTimeout(() => {
resolve(x);
}, 2000);
});
}
async function add1(x) {
const a = await resolveAfter2Seconds(20);
const b = await resolveAfter2Seconds(30);
return x + a + b;
}
add1(10).then(v => {
console.log(v); // prints 60 after 4 seconds.
});
async function add2(x) {
const p_a = resolveAfter2Seconds(20);
const p_b = resolveAfter2Seconds(30);
return x + await p_a + await p_b;
}
add2(10).then(v => {
console.log(v); // prints 60 after 2 seconds.
});
■ await와 promise.all을 혼동하지...