비동기 in JS
동기적: 작업이 끝날 때까지 순차적으로 진행된다. 때문에 동시에 여러 작업을 할 수 없다.
비동기: 동시에 여러가지 작업이 가능하며 기다리는 과정에서 다른 함수도 호출 할 수 있다.
setTimeout()함수는 백그라운드에서 실행되기 때문에 사용하면 비동기적으로 코드를 짤 수 있다.
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('다음 작업');
-result-
작업 시작!
다음 작업
503ms
만약에 위의 코드에서 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();
}, 0);
}
console.log('작업 시작!');
work(() => {
console.log('작업이 끝났어요!')
});
console.log('다음 작업');
-result-
작업시작!
다음 작업
498ms
작업이 끝났어요!
주로 비동기적으로 처리되는 작업.
1.Ajax Web API 요청: 만약 서버쪽에서 데이터를 받와아야 할 때는, 요청을 하고 서버에서 응답을 할 때 까지 대기를 해야 되기 때문에 작업을 비동기적으로 처리합니다.
파일 읽기: 주로 서버 쪽에서 파일을 읽어야 하는 상황에는 비동기적으로 처리합니다
2.암호화/복호화: 암호화/복호화를 할 때에도 바로 처리가 되지 않고, 시간이 어느정도 걸리는 경우가 있기 때문에 비동기적으로 처리합니다.
3.작업 예약: 단순히 어떤 작업을 몇초 후에 스케쥴링 해야 하는 상황에는, setTimeout 을 사용하여 비동기적으로 처리합니다.
Author And Source
이 문제에 관하여(비동기 in JS), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@dpfprtus/비동기-in-JS저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)