이 글은 주로 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 타이머 및 단일 스레드 비동기 기능의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!