728x90
반응형
질문 : sleep ()의 JavaScript 버전은 무엇입니까?
다음 pausecomp 함수 ( 여기에서 pausecomp
보다 JavaScript sleep
을 엔지니어링하는 더 좋은 방법이 있습니까?
function pausecomp(millis)
{
var date = new Date();
var curDate = null;
do { curDate = new Date(); }
while(curDate-date < millis);
}
이것은 JavaScript의 Sleep과 중복되지 않습니다. 코드가 실행되기 전에 지연이 아니라 함수 중간에 실제 잠 을 원합니다.
답변
이 질문이 제기 된 2009 년 이후 JavaScript는 크게 발전했습니다. 다른 모든 답변은 이제 구식이거나 지나치게 복잡합니다. 다음은 현재 모범 사례입니다.
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
async function demo() {
console.log('Taking a break...');
await sleep(2000);
console.log('Two seconds later, showing sleep in a loop...');
// Sleep in loop
for (let i = 0; i < 5; i++) {
if (i === 3)
await sleep(2000);
console.log(i);
}
}
demo();
또는 한 줄로 :
await new Promise(r => setTimeout(r, 2000));
알아두세요.
- await는 비동기 키워드 앞에 오는 함수 또는 증가하는 환경에서 스크립트의 최상위 수준에서만 실행할 수 있습니다.
- await는 현재 비동기 함수만 일시 중지합니다. 즉, 나머지 스크립트의 실행을 차단하는 것이 아닙니다. 대부분의 경우 여러분이 원하는 것입니다. 차단 구성을 원하는 경우 Atomics를 사용하여 이 답변을 참조하십시오.잠시 기다려 주십시오. 그러나 대부분의 브라우저는 브라우저의 기본 스레드에서는 허용하지 않습니다.
두 가지 새로운 JavaScript 기능 (2017 년 기준)이이 "sleep"함수를 작성하는 데 도움이되었습니다.
- Promises, ES2015의 기본 기능 (일명 ES6). 또한 수면 기능의 정의에 화살표 기능을 사용합니다.
async/await
기능을 사용하면 코드가 약속이 해결 될 때까지 명시 적으로 기다릴 수 있습니다 (해결 또는 거부).
호환성
- promise는 Node v0.12 + 에서 지원되며 IE를 제외한 브라우저에서 광범위하게 지원됩니다.
async
/await
는 V8에 착륙했으며 Chrome 55 (2016 년 12 월 출시) 이후 기본적으로 활성화되었습니다.2016 년 10 월 Node 7에, 2016 년11 월 Firefox Nightly- 에도 출시되었습니다.
- 2016 년 10 월 노드 7에 상륙했습니다.
- 2016 년 11 월 Firefox Nightly 에도 출시되었습니다.
당신이 (도달 노드보다 오래된 7 사용하고 어떤 이상한 이유로 경우 의 수명을 ), 또는 오래된 브라우저를 대상으로, async
/ await
여전히를 통해 사용할 수 있습니다 바벨 (도구를 것 transpile 평범한 구식으로 자바 스크립트 + 새로운 기능을 JavaScript), transform-async-to-generator
플러그인 사용.
출처 : https://stackoverflow.com/questions/951021/what-is-the-javascript-version-of-sleep
728x90
반응형
'프로그래밍 언어 > HTML,CSS,JS' 카테고리의 다른 글
HTML에 PDF를 포함하는 권장 방법 (0) | 2021.07.21 |
---|---|
CSS를 사용하여 텍스트 길이를 n 줄로 제한 (0) | 2021.07.21 |
JSON에서 null 표시 (0) | 2021.07.20 |
Node.js를 시작하기 좋은 가이드 모음 (1) | 2021.07.20 |
JavaScript 소스 맵 (.map 파일)을 사용하는 방법 (0) | 2021.07.19 |