동기
console.log("start");
console.log("end");
비동기
비동기와 동기 비교
장점 | 단점 | |
동기 | 설계가 쉽고 직관적입니다. | 결과가 주어질 때까지 아무것도 하지 목하고 대기해야 합니다. |
비동기 | 여러개의 작업을 동시에 수행 가능하고, 효율적인 자원 사용 가능합니다. |
설계가 복잡합니다. |
비동기 처리 방식의 문제점
콜백함수 vs 기본함수
function cry() {
console.log("cry");
}
function sing() {
console.log("sing");
}
function dance() {
console.log("dance");
}
기본함수
// 1. 기본 함수
// 기분 좋을때 춤을 추고 싶으면 sing()함수에 dance()로 변경해야함
function checkMood(mood) {
if (mood === "good") {
sing();
} else {
cry();
}
}
checkMood("good");
checkMood("sad");
콜백함수
// 2. 콜백함수 (함수를 매개변수로 넣어줌)
function checkMoodCallBack(mood, goodCallback, badCallback) {
if (mood === "good") {
goodCallback();
} else {
badCallback();
}
}
checkMoodCallBack("good", dance, cry);
checkMoodCallBack("Not bad", dance, sing);
콜백 지옥
promise 생성
const promise = new Promise((resolve, reject) => {
//executor
});
promise의 3가지 상태
//처음 Promise 객체
state: "pending", result: undefined
//Promise가 성공한 경우
state: "fulfilled", result: value
//Promise가 실패한 경우
state: "rejected", result: error
promise의 후속 처리 메소드 - then
promise.then(
function(result){ //결과를 다룹니다.}
function(error){ //에러를 다룹니다. }
);
-> 첫 번째 인수: 프로미스가 이행되었을 때 실행되는 함수
-> 두 번째 인수: 프로미스가 거부되었을 때 실행하는 함수
promise의 후속 처리 메소드 - catch
promise의 후속 처리 메소드 - finally
promise chaining
Promise | Callback |
흐름이 자연스럽다. 비동기 함수 처리 결과에 따라 그다음에 무엇을 할지 코드를 작성하면 된다. | 비동기 처리 함수를 호출할 때, 콜백 함수가 미리 정의되어 있어야 한다. |
비동기 함수 처리 결과가 프로미스 객체에 저장되기 때문에 코드 작성이 용이해진다. | 비동기 함수 처리 결과가 필요할 때마다 콜백 함수를 호출해야 한다. |
원하는 만큼 then 메소드를 호출할 수 있다. | 하나의 콜백 함수만 호출할 수 있다. |
async
await
동적 UI 만드는 스텝 (Alert 박스 만들기) (0) | 2024.01.27 |
---|---|
자바스크립트의 근본 (0) | 2024.01.27 |
[자바스크립트] DOM, 이벤트 (0) | 2023.04.13 |
[자바스크립트] 만 나이 계산기 코드 분석 (0) | 2023.04.09 |
[자바스크립트] 문자열, 배열, 조건문, 반복문, 에러 처리, 함수 (0) | 2023.04.09 |