|

[자바스크립트] 동기, 비동기 함수

자바스크립트에서 동기(Synchronous) 함수와 비동기(Asynchronous) 함수는 코드의 실행 방식에 큰 차이를 가지고 있습니다. 이 두 개념을 이해하는 것은 자바스크립트 프로그래밍에서 매우 중요합니다.

동기(Synchronous) 함수

동기 함수는 코드가 작성된 순서대로 실행되는 방식입니다. 즉, 하나의 작업이 완료된 후에 다음 작업이 실행됩니다. 동기 방식의 가장 큰 특징은 코드의 실행이 예측 가능하다는 것이며, 이는 디버깅을 쉽게 만들어 줍니다. 그러나 긴 작업을 처리할 때는 해당 작업이 완료될 때까지 다음 코드의 실행이 차단(block)되어 애플리케이션의 반응성이 떨어질 수 있습니다.

동기 함수 예제:

function multiply(x, y) {
    return x * y;
}

console.log('시작');
console.log(multiply(5, 10));  // 50
console.log('끝');

Code language: JavaScript (javascript)

비동기(Asynchronous) 함수

비동기 함수는 특정 코드의 실행이 완료되지 않아도 다음 코드로 넘어갈 수 있게 합니다. 이를 통해 I/O 작업이나 네트워크 요청 같은 시간이 많이 걸리는 작업을 처리할 때 유용하며, 애플리케이션의 반응성을 유지할 수 있습니다. 자바스크립트에서 비동기 작업을 처리하는 방법에는 콜백 함수, 프로미스(Promises), async/await 등이 있습니다.

비동기 함수 예제 1: 콜백 사용

function fetchData(callback) {
    setTimeout(() => {
        callback('데이터');
    }, 1000);
}

console.log('데이터 요청');
fetchData((data) => {
    console.log('데이터 수신: ' + data);
});
console.log('다른 작업 실행');

Code language: JavaScript (javascript)

비동기 함수 예제 2: Promise 사용

function fetchData() {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            resolve('데이터');
        }, 1000);
    });
}

console.log('데이터 요청');
fetchData().then((data) => {
    console.log('데이터 수신: ' + data);
});
console.log('다른 작업 실행');

Code language: JavaScript (javascript)

위 예제에서 볼 수 있듯이, 비동기 함수는 setTimeout, fetch, Promise 등을 사용하여 비동기적 작업을 처리할 수 있습니다. 이는 코드 실행 중에 발생할 수 있는 대기 시간을 효과적으로 관리하여 사용자 경험을 향상시킬 수 있습니다.

Similar Posts

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다