function a() {
setTimeout(b, 0);
console.log('a');
b().then( console.log );
}
async function b() {
console.log('b');
return 'c';
}
a();
위 코드의 실행 결과는?
그리고 그렇게 나오는 이유는?
function a() {
setTimeout(b, 0);
console.log('a');
b().then( console.log );
}
async function b() {
console.log('b');
return 'c';
}
a();
위 코드의 실행 결과는?
그리고 그렇게 나오는 이유는?
b,a,b,c?
땡
으악 잠만
a b b c
ㄴ 정답 이유는?
B에 then 이후 success fail인데 리턴값이되던가
아 잠만 아아
됨
위 코드는 비동기고 아래 코드는 동기라
으악 퇴근한지 얼마안되니 머가리가 안돌아간다 퇴갤 ㅡㅠ
둘 다 틀림
정답 이유, 답안 둘 다 틀림
사실 땔깜 수준도 안되서 모름 ㅎㅎ
아아 이해햇더
ㄴ 오옹 그래서 답으으은..!
setTimeout adds a delay before a function call, whereas async/await is syntactic sugar ontop of promises, a way to chain code to run after a call completes, so they're different.
난 너무궁굼해서 직접돌려봤으니
실격할게 걍
굳이 써본다면
ㄴ 브라우저마다 다를 수도 있는데(이거 내부구현이 과거에는 재각각이였음.. 최근에는 그나마 맞춰지고 있고) abcb 임
코린이 질문) b는 프라미스 리턴 안하는데 then을 어떻게 쓰나요?
어렵다 설명좀
A 함수 실행후 setTimeout동작으로 내부타이머쪽에 가장바깟으로 b함수 진행 A 로그 띠우고 b직접호출후 b로 로그띠우고 then 후 리턴값 c로 로그띠우고 가장뒤로갓던 b실행
async function은 return value 를 resolve하는 프로미스를 반환함. (중간에 throw 나 에러 터지면 reject 하고)
사실 이게 태스크랑 마이크로 태스크 알아야지 답이 나오는문제임
간단하게 실행되는걸 적어주자면요
9ㅅ9
재미난 검색거리 ㄱㅅㄱㅅ
a(); // stack : global -> a // Task Que : empty // Microtask : empty setTimeout(b, 0); // stack : global -> a -> setTimeout // Task Que : b // Microtask : empty console.log('a'); // stack : global -> a -> console.log // Task Que : b // Microtask : empty b(); // stack : global -> a -> b // Task Que : b // Microtask : empty console.log('b'); // stack : global -> a -> b -> console.log // Task Que : b
대강 이렇게 흘러감요
ㅇㅎ
https://jakearchibald.com/2015/tasks-microtasks-queues-and-schedules/
이거랑
http://2ality.com/2014/09/es6-promises-foundations.html
여기에 정리 잘 되있음
ㄱㅅㄱㅅ
async 몰라서 틀렸었는뎅 친절한설명 감사헤요\