>  기사  >  웹 프론트엔드  >  조건을 평가하기 전에 JavaScript 실행을 5초 동안 일시 중지하는 방법은 무엇입니까?

조건을 평가하기 전에 JavaScript 실행을 5초 동안 일시 중지하는 방법은 무엇입니까?

DDD
DDD원래의
2024-11-02 00:16:31127검색

How to Pause JavaScript Execution for 5 Seconds Before Evaluating a Condition?

실행 중 일시 중지: 5초 대기 구현

JavaScript 코드에서 실행 타이밍 문제가 발생했습니다. 특정 기능. 조건을 평가하기 전에 5초 동안 코드 블록의 실행을 지연하려고 합니다.

제공한 코드:

<code class="js">function stateChange(newState) {
  setTimeout('', 5000);

  if(newState == -1) {
    alert('VIDEO HAS STOPPED');
  }
}</code>

setTimeout 때문에 원하는 동작을 달성하지 못합니다. 함수는 실제로 if 문의 실행을 지연시키지 않습니다. 대신 콜백 함수가 5000밀리초 후에 실행되도록 예약하지만 if 문은 즉시 실행됩니다.

이 문제를 해결하려면 실행 흐름을 일시 중지하고 실행 흐름을 일시 중지하는 방법을 제공하는 JavaScript의 비동기 프로그래밍 기술을 활용할 수 있습니다. 나중에 다시 시작하세요. 다음은 귀하의 요구 사항을 해결할 수 있는 두 가지 접근 방식입니다.

브라우저 기반 솔루션

<code class="js">const delay = ms => new Promise(res => setTimeout(res, ms));

async function stateChange(newState) {
  await delay(5000);
  console.log("Waited 5s before checking condition");

  if (newState == -1) {
    alert('VIDEO HAS STOPPED');
  }
}</code>

이 솔루션에서는 약속을 생성하는 지연이라는 유틸리티 함수를 정의합니다. 이는 지정된 밀리초 후에 확인됩니다. async 키워드는 stateChange 함수를 비동기식으로 만드는 데 사용되어 Promise가 해결될 때까지 실행을 일시 중지할 수 있습니다.

Node.js 솔루션

<code class="js">const { setTimeout } = require("timers/promises");

async function stateChange(newState) {
  await setTimeout(5000);
  console.log("Waited 5s before checking condition");

  if (newState == -1) {
    alert('VIDEO HAS STOPPED');
  }
}</code>

이 솔루션은 다음을 활용합니다. Promise를 반환하는 Node.js의 내장 setTimeout 함수를 사용하면 Promise가 해결될 때까지 실행을 일시 중지할 수 있습니다. 이전 예시와 마찬가지로 async 키워드를 사용했습니다.

위 내용은 조건을 평가하기 전에 JavaScript 실행을 5초 동안 일시 중지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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