4. 복잡해지는 비동기 처리
Q. 다음과 같이 a, b, c 순서로 동작하게 하려면?
a() started
a() done
b() started
b() done
c() started
c() done정답 보기
콜백 함수를 인수로 전달하여 원하는 작업이 비동기 처리가 수행된 이후에 수행되도록 보장
solution.js
function a(callback) {
const aCallback = () => {
console.log('a() started');
callback();
};
setTimeout(aCallback, 1000);
}
function b(callback) {
const bCallback = () => {
console.log('b() started');
callback();
};
setTimeout(bCallback, 500);
}
function c(callback) {
const cCallback = () => {
console.log('c() started');
callback();
};
setTimeout(cCallback, 1200);
}
function aDone() {
console.log('a() is done!');
}
function bDone() {
console.log('b() is done!');
}
function cDone() {
console.log('c() is done!');
}
a(aDone);
b(bDone);
c(cDone);문제점
a() started, a done()처럼 a는 a끼리, b는 b끼리 실행 순서는 정해졌지만,
여전히 지연된 시간 순서에 따라 지연 시간이 짧은 순서대로 b, a, c 순으로 동작하게 됨
Last updated on