await
연산자는 Promise
를 기다리기 위해 사용됨. 연산자는 async function
내부에서만 사용할 수 있습니다.
[rv] = await expression;
expression
Promise
혹은 기다릴 어떤 값입니다.
rv
Promise
에 의해 만족되는 값이 반환됩니다. Promise
가 아닌 경우에는 그 값 자체가 반환됩니다.
만약 Promise
가 await
에 넘겨지면, await
은 Promise
가 fulfill되기를 기다렸다가, 해당 값을 리턴한다.
function resolveAfter2Seconds(x) {
return new Promise(resolve => {
setTimeout(() => {
resolve(x);
}, 2000);
});
}
async function f1() {
var x = await resolveAfter2Seconds(10);
console.log(x); // 10
}
f1();
만약 값이 Promise
가 아니라면, 해당 값은 resolve
된 Promise
로 변환되며 이를 기다립니다.
async function f2() {
var y = await 20;
console.log(y); // 20
}
f2();
만약 Promise
가 reject
되면, reject
된 값이 throw
됩니다.
async function f3() {
try {
var z = await Promise.reject(30);
} catch(e) {
console.log(e); // 30
}
}
f3();
try블럭 없이 rejected Promise
다루기
var response = await promisedFunction().catch((err) => { console.error(err); });