비동기 함수라 순차적으로 실행이 안된다.
var testawait;
async function PromiseOrAsync() {
console.log("start1");
function Promisetest() {
return new Promise((resolve, reject) => {
setTimeout(() => resolve(console.log("start2")), 1000);
});
}
testawait = Promisetest().then((e) => {
console.log("start3", e);
});
console.log("start4");
}
PromiseOrAsync();
console.log("start5", testawait);
await를 사용해도 async내에서만 순차적으로 적용될 뿐이다. 비동기로 선언된 순간 실행컨텍스트가 callstack에 쌓이지 않고Web APIs로 완전히 분리되기 때문
var testawait;
async function PromiseOrAsync() {
console.log("start1");
function Promisetest() {
return new Promise((resolve, reject) => {
setTimeout(() => resolve(console.log("start2")), 1000);
});
}
testawait = await Promisetest().then((e) => {
console.log("start3", e);
});
console.log("start4");
}
PromiseOrAsync();
console.log("start5", testawait);