>웹 프론트엔드 >프런트엔드 Q&A >node.js에 타이머가 있나요?

node.js에 타이머가 있나요?

WBOY
WBOY원래의
2022-07-04 17:28:511908검색

"node.js"에는 타이머가 있습니다. "node.js"의 타이머 모듈에는 특정 시간 동안 코드를 실행하는 함수가 포함되어 있으므로 타이머는 require()를 통해 도입할 필요가 없습니다. 메서드는 시뮬레이션됩니다. 브라우저의 JavaScript 기능은 전역적입니다. "node.js"의 타이머 기능은 웹 브라우저에서 제공하는 타이머 API와 유사한 API를 구현합니다.

node.js에 타이머가 있나요?

이 문서의 운영 환경: Windows 10 시스템, nodejs 버전 12.19.0, Dell G3 컴퓨터.

node.js에는 타이머가 있습니다

Node.js의 타이머

Node.js의 타이머 모듈에는 특정 간격으로 코드를 실행하는 함수가 포함되어 있습니다. 타이머는 require()를 통해 도입할 필요가 없습니다. 왜냐하면 이러한 모든 메소드는 브라우저에서 JavaScript 기능을 시뮬레이션하고 전역적이기 때문입니다. 이러한 함수가 언제 실행되는지 전반적으로 더 잘 이해하려면 Node.js의 이벤트 폴링을 읽는 것이 좋습니다.

Node.js로 시간 연속성 제어

Node.js의 API 함수는 현재 시간 이후 특정 순간에 코드가 실행을 시작할 수 있도록 하는 여러 가지 방법을 제공합니다. 아래에 제공된 기능은 대부분의 브라우저에서 사용할 수 있으므로 유사해 보입니다. 그러나 Node.js는 실제로 자체 구현을 제공합니다. 타이머는 시스템에 매우 긴밀하게 통합되어 있으며 이러한 API는 브라우저 기능의 복사본이지만 여전히 다르게 구현됩니다.

timer는 미래의 특정 시점에 호출될 함수를 예약하는 데 사용됩니다. Node.js의 타이머 함수는 웹 브라우저에서 제공하는 타이머 API와 유사한 API를 구현하지만 Node에서 이벤트 루프 구현을 사용합니다. .js 4가지 관련 메서드가 있습니다.

setTimeout(callback, delay[, ...args])
setInterval(callback[, ...args])
setImmediate(callback[, ...args])
process.nextTick(callback[, ...args])

예는 다음과 같습니다.

setTimeout()은 지정된 기간 후에 특정 코드 작업을 실행하는 데 사용할 수 있습니다. 이 함수는 브라우저 JavaScript 함수 window.setTimeout()과 매우 유사하지만 문자열을 실행에 전달할 수는 없습니다.

setTimeout()은 실행 가능한 함수를 첫 번째 매개변수로 받아들인 다음 밀리초 단위의 지연 시간을 두 번째 매개변수로 받아들입니다. 나머지 매개변수도 이 함수에 전달되는 매개변수로 포함될 수 있습니다. 다음은 예시입니다.

function myFunc(arg) {
  console.log(`arg was => ${arg}`);
}
setTimeout(myFunc, 1500, 'funky');

setTimeout()을 사용하기 때문에 위 함수 myFunc()는 약 1500밀리초(또는 1.5초) 정도 실행됩니다.

설정된 타이밍 간격은 코드가 매번 정확한 밀리초 간격으로 실행된다는 것을 보장할 수 없습니다. 이는 이벤트 폴링을 차단하거나 처리하는 다른 코드가 이 타이밍의 실행을 지연시키기 때문입니다. 유일한 보장은 타이머가 선언된 간격보다 일찍 실행되지 않는다는 것입니다.

setTimeout()은 설정된 타이머를 참조할 수 있는 Timeout 객체를 반환합니다. 반환된 객체는 타이밍을 취소하고(아래의 clearTimeout() 참조) 실행 동작을 변경하는 데 사용할 수 있습니다(아래 unref() 참조).

"즉시 실행" setImmediate()

setImmediate()는 현재 이벤트 투표가 끝나면 실행됩니다. 이 코드는 현재 이벤트 폴링의 I/O 작업 이후와 다음 타이머 주기 이전에 실행됩니다. 코드 실행은 "즉시 실행"으로 간주할 수 있습니다. 즉, 바로 다음 setImmediate() 함수 호출이 setImmediate() 함수 매개 변수보다 먼저 실행된다는 의미입니다.

setImmediate()의 첫 번째 매개변수는 실행될 함수입니다. 실행되면 후속 매개변수가 이 함수에 매개변수로 전달됩니다. 예는 다음과 같습니다.

console.log('before immediate');
setImmediate((arg) => {
  console.log(`executing immediate: ${arg}`);
}, 'so immediate');
console.log('after immediate');

setImmediate()에 전달된 위 함수는 실행 가능한 코드가 실행된 후에 실행되므로 출력은 다음과 같습니다.

before immediate
after immediate
executing immediate: so immediate

setImmediate()는 Scheduled를 취소하는 데 사용할 수 있는 Immediate 개체를 반환합니다. 예약된 작업(아래의clearImmediate() 참조).

참고: setImmediate()와 process.nextTick()을 혼동하지 마세요. 여기에는 몇 가지 주요 차이점이 있습니다. 첫째, process.nextTick()은 Immediate 설정 전과 예약된 I/O 전에 실행됩니다. 둘째, process.nextTick()은 지울 수 없습니다. 즉, process.nextTick()을 사용하여 코드가 실행되면 실행을 중단할 수 없습니다. 자세한 내용은 이 튜토리얼을 참조하세요. 이에 대해 자세히 알아보십시오. process.nextTick()의 작동을 이해하십시오.

"영구 폴링" 실행 ~ setInterval()

여러 번 실행해야 하는 함수가 있는 경우 setInterval()이 유용할 수 있습니다. setInterval()은 함수를 매개변수로 허용하며, 두 번째 매개변수는 밀리초 단위로 지정된 지연입니다. setTimeout()과 마찬가지로 나머지 매개변수는 이 뒤에 추가되어 함수 호출에 전달되는 인수로 사용될 수 있습니다. setTimeout()과 유사한 또 다른 점은 이벤트 폴링에 일부 작업이 중단될 수 있으므로 지연의 정확성이 보장되지 않으므로 대략적인 지연으로 간주할 수 있다는 것입니다. 다음 예와 같습니다.

function intervalFunc() {
  console.log('Cant stop me now!');
}
setInterval(intervalFunc, 1500);

위 예에서 IntervalFunc()는 종료될 때까지 1500밀리초마다(또는 1.5초마다) 실행됩니다.

setTimeout()과 마찬가지로 setInterval()도 참조할 수 있고 설정된 타이머를 변경할 수 있는 Timeout 객체를 반환합니다.

추천 학습: "nodejs 비디오 튜토리얼"

위 내용은 node.js에 타이머가 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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