> 웹 프론트엔드 > JS 튜토리얼 > 자바스크립트로 신호등을 구현하는 방법

자바스크립트로 신호등을 구현하는 방법

藏色散人
풀어 주다: 2021-11-16 14:14:37
원래의
5805명이 탐색했습니다.

JavaScript에서 신호등을 구현하는 방법: 1. setTimeout 및 재귀를 사용하여 루프의 색상을 변경합니다. 2. Promise를 사용하고 그 다음에 다음 색상 변경을 작성합니다. 3. 신호등 효과를 구현하려면 비동기 대기를 사용합니다.

자바스크립트로 신호등을 구현하는 방법

이 튜토리얼의 운영 환경: Windows 7 시스템, JavaScript 버전 1.8.5, Dell G3 컴퓨터.

JavaScript로 신호등을 구현하는 방법은 무엇입니까?

JavaScript를 사용하여 신호등 구현

setTimeout, Promise 및 async Wait를 세 가지 방법으로 사용하여 신호등 코드를 구현합니다. 빨간색 표시등은 2초, 노란색 표시등은 1초, 녹색 표시등은 3초, 색상 변경 루프에서. 색상을 변경하는 방법은 단순히 색상을 인쇄하는 것입니다.

setTimeout 구현

 setTimeout을 사용하는 것이 가장 기본적인 구현 방법으로, 재귀를 사용하여 루프에서 색상을 변경하는 코드는 다음과 같습니다.

function changeColor(color) {
console.log('traffic-light ', color);
}
function main() {
changeColor('red');
setTimeout(()=>{
changeColor('yellow');
setTimeout(() => {
changeColor('green');
setTimeout(main, 2000);
}, 1000);
}, 2000);
}
main();
로그인 후 복사

Promise 구현

 Promise를 사용하여 그 다음 색상 변경을 작성하고 마지막으로 재귀를 사용하여 루프를 완료합니다.

function sleep(duration){
    return new Promise(resolve => {
        setTimeout(resolve, duration);
    })
}
function changeColor(duration,color){
    return new Promise(resolve => {
console.log('traffic-light ', color);
    sleep(duration).then(resolve);
})
}
function main() {
return new Promise(resolve => {
changeColor(2000, 'red').then(() => {
changeColor(1000, 'yellow').then(() => {
changeColor(3000, 'green').then(() => {
main();
})
})
})
})
}main();
로그인 후 복사

async wait 구현

 async wait를 사용하면 Promise에서 일련의 .then.then.then을 피할 수 있으며 더 이상 루프를 구현하기 위해 while을 사용할 필요가 없습니다.

function sleep(duration) {
return new Promise(resolve => {
setTimeout(resolve, duration);
})
}
async function changeColor(color, duration) {
console.log('traffic-light ', color);
await sleep(duration);
}
async function main() {
while (true) {
await changeColor('red', 2000);
await changeColor('yellow', 1000);
await changeColor('green', 3000);
}
}
main();
로그인 후 복사

추천 학습: "JavaScript 기본 튜토리얼"

위 내용은 자바스크립트로 신호등을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿