Javascript

Javascript - 비동기 처리

Starters 2020. 9. 6. 16:09

동기적 / 비동기적 처리

 

동기적 처리

function work(){
	const start = Date.now(); // 현재 날짜를 숫자형태로 표시
    for (let i = 0; i < 1000000000; i++){
	
	}
    const end = Date.now();
    console.log(end - start + 'ms'); // 얼마나 시간 걸렸는지
}

work();

console.log('다음 작업'); // work() 가 다 끝나고 실행됨

 

비동기적 처리

function work(){
	setTimeout(() => {
    	const start = Date.now(); // 현재 날짜를 숫자형태로 표시
        for (let i = 0; i < 1000000000; i++){

        }
        const end = Date.now();
        console.log(end - start + 'ms'); // 얼마나 시간 걸렸는지	
    }, 0)
}

console.log('작업 시작');

work();

console.log('다음 작업');

 

setTimeout() 사용하면 비동기적으로 작업 수행할 수 있다.

 

※ 0 으로 초기값 설정해도 4ms 이후에 실행된다.(시스템에서의 최소 조건 기본값이기 때문)

 

만약 이 상태에서 work() 함수 끝난 다음 다른 작업 수행하고 싶다면,

callback 함수 사용

function work(callback){
	setTimeout(() => {
    	const start = Date.now();
        for (let i = 0; i < 1000000000; i++){

        }
        const end = Date.now();
        console.log(end - start + 'ms');
        callback(end - start);
    }, 0)
}

console.log('작업 시작');

work((ms) => {
	console,log('작업이 다 끝났어요!');
    console,log(ms + 'ms 걸렸다고 해요');
});

console.log('다음 작업');

 

비동기 작업 수행

Ajax Web API 요청 - 요청이후 서버에서 요청할 때까지 기다려야하기 때문에

파일 읽기

암호화 / 복호화

작업 예약

-- 대부분 시간이 조금 걸리는 작업들에 대해서 비동기 작업을 사용한다.

.. 등의 상황에서 사용한다.