JavaScript에서 Java의 Thread.sleep ()에 해당하는 것은 무엇입니까? [복제]
이 질문에는 이미 답변이 있습니다.
- sleep ()의 JavaScript 버전은 무엇입니까? 답변 74 개
Thread.sleep()
JavaScript에서 Java와 동등한 것은 무엇입니까 ?
간단한 대답은 그러한 기능이 없다는 것입니다.
가장 가까운 것은 다음과 같습니다.
var millisecondsToWait = 500;
setTimeout(function() {
// Whatever you want to do after the wait
}, millisecondsToWait);
당신이주의 특히 브라우저가 단일 스레드 환경에서 자바 스크립트를 실행하는 거의 확실하기 때문에, 바쁜 대기 (예를 들어 스핀 루프)에 싶지 않아요.
JavaScript의 스레드를 처리하는 몇 가지 다른 SO 질문이 있습니다.
이 질문도 도움이 될 수 있습니다.
이 코드로 시도하십시오. 나는 그것이 당신에게 도움이되기를 바랍니다.
function sleep(seconds)
{
var e = new Date().getTime() + (seconds * 1000);
while (new Date().getTime() <= e) {}
}
ECMAScript 2017을 사용할 수 있다고 가정하면 async / await 및 setTimeout을 사용하여 유사한 동작을 에뮬레이션 할 수 있습니다. 다음은 절전 기능의 예입니다.
async function sleep(msec) {
return new Promise(resolve => setTimeout(resolve, msec));
}
그런 다음 다음과 같은 다른 비동기 기능에서 절전 기능을 사용할 수 있습니다.
async function testSleep() {
console.log("Waiting for 1 second...");
await sleep(1000);
console.log("Waiting done."); // Called 1 second after the first console.log
}
콜백이 필요 없기 때문에 좋습니다. 단점은 비동기 기능에서만 사용할 수 있다는 것입니다. 무대 뒤에서 testSleep 기능이 일시 정지되고 휴면이 완료된 후 재개됩니다.
MDN에서 :
await 표현식은 약속이 이행되거나 거부 될 때까지 비동기 기능 실행이 일시 정지되고 이행 후 비동기 기능의 실행을 재개합니다.
자세한 설명은 다음을 참조하십시오.
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/await
웹 페이지를 일시 중지했기 때문에 직접적으로 동등한 것은 없습니다. 그러나 setTimeout ()이 있습니다 .
function doSomething() {
thing = thing + 1;
setTimeout(doSomething, 500);
}
폐쇄 예 (다니엘에게 감사) :
function doSomething(val) {
thing = thing + 1;
setTimeout(function() { doSomething(val) }, 500);
}
두 번째 인수는 실행 전의 밀리 초입니다. 시간 이벤트 또는 작업 수행 전에 대기 할 때이 인수를 사용할 수 있습니다.
편집 : 깔끔한 결과를 위해 주석을 기반으로 업데이트되었습니다.
스핀 루프 (기능을 지연시키기 위해 일종의 계산을 수행하는 오랜 시간 동안 반복되는 루프)를 작성하거나 다음을 사용할 수 있습니다.
setTimeout("Func1()", 3000);
3 초 후에 'Func1 ()'이 호출됩니다.
편집하다:
크레딧은 주석 작성자에게 전달되지만 익명 함수를 setTimeout에 전달할 수 있습니다.
setTimeout(function() {
//Do some stuff here
}, 3000);
이것은 훨씬 효율적이며 자바 스크립트의 평가 기능을 호출하지 않습니다.
최상의 솔루션을 얻으려면 ECMA 스크립트 2017에 async / await 문을 사용하십시오.
대기는 비동기 기능 내에서만 사용할 수 있습니다
function sleep(time) {
return new Promise((resolve) => {
setTimeout(resolve, time || 1000);
});
}
await sleep(10000); //this method wait for 10 sec.
Note : async / await not actualy stoped thread like Thread.sleep but simulate it
setTimeout would not hold and resume on your own thread however Thread.sleep does. There is no actual equal in Javascript
Or maybe you can use the setInterval function, to call a particular function, after the specified number of milliseconds. Just do a google for the setInterval prototype.I don't quite recollect it.
This eventually helped me:
var x = 0;
var buttonText = 'LOADING';
$('#startbutton').click(function(){
$(this).text(buttonText);
window.setTimeout(addDotToButton,2000);
})
function addDotToButton(){
x++;
buttonText += '.';
$('#startbutton').text(buttonText);
if (x < 4) window.setTimeout(addDotToButton, 2000);
else location.reload(true);
}
참고URL : https://stackoverflow.com/questions/1447407/whats-the-equivalent-of-javas-thread-sleep-in-javascript
'Programing' 카테고리의 다른 글
의존적으로 타이핑하지 않는 이유는 무엇입니까? (0) | 2020.06.04 |
---|---|
“node_modules”폴더가 git 저장소에 포함되어야합니다 (0) | 2020.06.04 |
CSS 만 사용하여 부트 스트랩 아이콘에 색상을 추가 할 수 있습니까? (0) | 2020.06.04 |
rhc 설정은 오류 파일 'dl / import 가져 오기 없음' (0) | 2020.06.04 |
쉘 명령을 실행하는 Groovy (0) | 2020.06.04 |