>웹 프론트엔드 >JS 튜토리얼 >JS 타이머 및 단일 스레드 비동기 기능

JS 타이머 및 단일 스레드 비동기 기능

不言
不言원래의
2018-07-07 10:05:001849검색

이 글은 주로 JS 타이머와 단일 스레드 비동기 기능을 소개합니다. 이제 어느 정도 참고할만한 가치가 있습니다. 도움이 필요한 친구들은 참고할 수 있습니다.

우선, 네, 타이머 관련 메소드는 모두 BOM 메소드이고 타이머는 설정된 시간
내에 코드의 일부를 실행하거나, 주어진 시간 간격 내에 코드를 반복하는 데 사용됩니다. 구체적인 기능 :

setTimeout(callback, delay);//delay一定的时间后,执行回调函数只执行一次
setInterval(callback, delay);//每隔一段时间执行一次callback,反复执行
clearInterval(timer);//清除定时

타이머는 정말 사용하기 쉬운데 왜 그렇게 말하나요?
JS는 단일 스레드이므로 스레드가 차단되기 쉽습니다.
해결 방법은 무엇입니까? --비동기!
물론 JS는 싱글스레드이므로 비동기식일 수 없지만, JS의 호스트 환경(예: 브라우저, 노드)은 멀티스레드
이며, 호스트 환경은 특정 메소드(예: 노드 이벤트) 드라이버)는 JS에 비동기 기능을 제공합니다.
갑자기 단일 스레드 비동기 JS에 대해 이야기하는 이유는 무엇입니까? 타이머 이벤트가 JS에 의해 비동기적으로 처리된다는 것은 무엇을 의미합니까?
코드 내:

var num = 1;
setTimeout(function() {
    num++;
    console.log(num);
}, 1000);
console.log(num); //结果并是不(2,1)而是(1,2)

이게 왜죠? 앞에서 언급했듯이 JS는 타이머 이벤트를 비동기적으로 처리합니다. 즉, 다음 코드를 실행하기 전에 타이머 이벤트

가 처리를 완료할 때까지 기다리지 않고 타이머 이벤트를 입력한 후 직접 삽입합니다. 이벤트 큐에서

아래 코드를 직접 실행합니다. 타이머 이벤트가 완료되면 JS가 타이머 이벤트 코드의 콜백 부분을 실행합니다. 이것은 비동기식입니다.

비동기식은 JS 스레드가 차단되는 것을 효과적으로 방지할 수 있으며 매우 효율적이므로 제한된 리소스로 JS가 더 많은 작업을 수행할 수 있습니다.

이것은 약간 놀랍습니다. . (노드에서는 많은 비동기 문제에 노출됩니다.)

위 내용은 모두의 학습에 도움이 되기를 바랍니다. PHP 중국어 웹사이트로!

관련 권장 사항:

JS 비동기 프로그래밍 Promise, Generator, async/await

# 🎜🎜#JS 비동기 프로그래밍 소개

위 내용은 JS 타이머 및 단일 스레드 비동기 기능의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.