본 자료는 박규하 코치님과 Elice 플랫폼의 자료를 사용하여 정리하였습니다.
function asyncFunction(callback) {
setTimeout(function() {
callback("Async Hello world");
}, 16);
}
asyncFunction(function(data) {
console.log(data);
});
asyncFunction
은 비동기 함수로, setTimeout
을 사용하여 16ms 후에 콜백함수를 실행function taskA(a, b, cb) {
setTimeout(() => {
const res = a + b;
cb(res);
}, 2000);
}
function taskB(a, cb) {
setTimeout(() => {
const res = a * 2;
cb(res);
}, 2000);
}
function taskC(a, cb) {
setTimeout(() => {
const res = a * -1;
cb(res);
}, 2000);
}
taskA(1, 2, (res_a) => {
taskB(res_a, (res_b) => {
taskC(res_b, (res_c) => {
console.log("taskC Result : ", res_c);
});
});
});
resolve
나 reject
함수를 호출하면 됩니다.then
메소드나 catch
메소드를 사용해서 비동기 처리 결과를 처리할 수 있습니다.then
비동기 작업이 성공적으로 완료된 경우 호출되는 메소드catch
비동기 작업이 실패한 경우 호출되는 메소드finally
비동기 작업의 결과에 상관없이 호출되는 메소드const promise = new Promise((resolve, reject) => {
// 비동기 처리를 수행하는 함수
// 비동기 처리가 완료되면 resolve 함수를 호출합니다.
resolve("비동기 처리 결과");
});
promise.then((result) => {
// 비동기 처리 결과를 처리합니다.
console.log(result);
}).catch((error) => {
// 에러를 처리합니다.
console.error(error);
});
async
함수를 만들고, 함수 내부에서 비동기 처리를 수행하는 코드 앞에 await
키워드를 붙이면 된다.await
키워드를 붙인 코드는 Promise 객체를 반환한다.async
함수에서 Promise 객체를 반환하면, then
메소드나 catch
메소드를 사용해서 비동기 처리 결과를 처리할 수 있다.async function asyncFunction() {
// 비동기 처리를 수행하는 코드
const result = await Promise.resolve("비동기 처리 결과");
return result;
}
asyncFunction().then((result) => {
// 비동기 처리 결과를 처리합니다.
console.log(result);
}).catch((error) => {
// 에러를 처리합니다.
console.error(error);
});
async
키워드를 붙인다await
키워드를 붙인다.