어떻게 수행하는 간단한 전환 작업에서 JavaScript 의 도움으로 setInterval()?

0

질문

이것은 무엇을 내 코드는 다음과 같:

var fnInterval = setInterval(function() {
  let b = true
  if (b) {
    console.log("hi")
  } else {
    console.log("bye")
  }
  b = !b
}, 1000);

clearTimeout(fnInterval, 10000)

나는 초보자를 자바 스크립트와는 나의 목표는 여기를 콘솔 로그 메시지 매 1 초에 대한 총 시간은 10 초 동안 각 구간 내에게 메시지 전환 값 사이에"안녕하세요"와"안녕". 어떻게 할 수 있습니다? (지금과 같은 값을 표시합에 대한 기본 부울이고 변경되지 않은 나중에)

javascript
2021-11-24 06:12:17
3

최고의 응답

0

이동 플래그를 변수의 기능:

let b = true;

const fnInterval = setInterval(function() {
    if (b) {
        console.log("hi");
    } else {
        console.log("bye");
    }
    b = !b
}, 1000);

타이머를 중지 후 10000 밀리초,랩 전화 clearIntervalsetTimeout:

setTimeout(() => clearInterval(fnInterval), 10000);

한편,참고는 반환 값의 setInterval 지 않은 기능이나 숫자,그래서 그것은 오해의 소지가 있을 수 있습을 전화 fnInterval.

2021-11-24 08:11:57
0

첫째,선언 let b = true 외부의 콜백 함수입니다. 그것은 다시 초기화된 각 부르지 않습니다.

둘째,10000 에 clearTimeout(fnInterval, 10000) 지 않는 유효한 매개 변수입니다. clearTimeout(timeoutId) 지 첫 번째 매개 변수만을 지웁 시간 제한에 전달하는 즉시. 할 필요 setTimeout 이 10 초 후에,경우에는 당신이 목표입니다. 하지만 일으키는 경쟁 조건이 사이의 두 시간 제한--부정확성을 의미할 수 있습니다 그리워의 일부는 기록이나 바람은 추가 기록합니다.

를 사용하여 카운터는 하나의 솔루션으로,다른 답변을 표시하지만,일반적으로 사용할 때 복잡한 타이밍 setInterval 필요를 삭제 한 후 그것을 일부 반복 횟수,나는 리팩터링하는 일반적인 promisified sleep 기능 setTimeout. 이 호출하는 코드는 많은 청소기(없음 콜백)과 피로 장난 clearTimeout.

대신 boolean 플립 플래그를 앞뒤로 사 메시지,더 나은 솔루션을 사용하는 것입니다 배열 계수는 현재 색인에 의해 메시지 배열의 길이 있습니다. 이것은 훨씬 더 쉽게 더 많은 항목을 추가하기 위해 코드가 이해하기 쉽게 때문에 상태에서 암시적인 카운터입니다.

const sleep = ms => new Promise(res => setInterval(res, ms));

(async () => {
  const messages = ["hi", "bye"];
  
  for (let i = 0; i < 10; i++) {
    console.log(messages[i%messages.length]);
    await sleep(1000);
  }
})();

2021-11-24 06:17:50
0

setInterval() 에 의해 중 clearInterval()clearTimeout(). 상세정보는 논평에서 아래 코드.

// Define a counter
let i = 0;
// Define interval function
const fnCount = setInterval(fnSwitch, 1000);

function fnSwitch() {
  // Increment counter
  i++;
  // if counter / 2 is 0 log 'HI'
  if (i % 2 === 0) {
    console.log(i + ' HI');
    // Otherwise log 'BYE'
  } else {
    console.log(i + ' BYE');
  }
  // If counter is 10 or greater run fnStop()
  if (i >= 10) {
    fnStop();
  }
};

function fnStop() {
  // Stop the interval function fnCount()
  clearInterval(fnCount);
};

2021-11-24 06:31:05

다른 언어로

이 페이지는 다른 언어로되어 있습니다

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................