이 함수는 다음과 같이 일하는 나는 싫어하겠어 싶다. js 초보 못잊어버려요 그림 이유를 밝혔다.
이를 때까지 5 초 전 검사 '는' 뉴스테이트 데릭쉐퍼드와 나열할지 '-'.
현재 이 싫어하겠어 잠깐, 그냥 바로 확인.
function stateChange(newState) {
setTimeout('', 5000);
if(newState == -1) {
alert('VIDEO HAS STOPPED');
}
}
, T be 이렇게 하면 정말 shouldn& # 39 는 올바른 사용을 위한 최적의 도구 시간초과를 OP& # 39 의 문제 및 기타 특별한 어디 그냥 뭔가 실행하십시오 일정 시간이 지나면. 조지프 실버 더불어 그의 답변은 있다는 것을 입증했다. 그러나 일부 비프로덕션 경우 일정 기간 동안 정말 매핑하려는 멈춤으로 스레드할 주, 이렇게 하면 do it.
function wait(ms){
var start = new Date().getTime();
var end = start;
while(end < start + ms) {
end = new Date().getTime();
}
}
엑서큐션 함께 형식으로:
console.log('before');
wait(7000); //7 seconds in milliseconds
console.log('after');
[브라우저 지원] [2] 로 확인하십시오 도입된 6 이 새로운 기능을 소개한다.
const delay = ms => new Promise(res => setTimeout(res, ms));
const yourFunction = async () => {
await delay(5000);
console.log("Waited 5s");
await delay(5000);
console.log("Waited an additional 5s");
};
이 방법의 가장 유리한 코드에 동기식 코드를 만드는 게 모양과 같이 동작합니다.
[2]: # Browser_compatibility https://developer.mozilla.org/en-us/docs/web/javascript/reference/operators/await
단순히 javascript 에 5 초 일시정지하려면 시도하시겠습니까 합니다. # 39 이 doesn&, t 작동합니까 이쪽요. 지금부터 5 초 분량의 코드를 실행할 수 있는 기능을 할 수 있지만, 스케줄하려면 동일팔레트에 코드를 실행할 수 있는 기능은 나중에 붙여넣습니다 기능과 코드를 계속 실행하십시오 미삭 후 즉시.
예를 들면 다음과 같습니다.
function stateChange(newState) {
setTimeout(function(){
if(newState == -1){alert('VIDEO HAS STOPPED');}
}, 5000);
}
그러나 코드가 있을 경우 다음과 같습니다.
stateChange(-1);
console.log("Hello");
() '이' 콘솔드로그 기술서임을 즉시 실행됩니다. 화재 () '에서' 스테이시엔제 시간초과했습니다 때까지 기다린 후에야 않을 것이라고 주장했습니다. 그냥 자바스크립트 실행 미리 정해진 시간에 대한 일시정지할 수 없습니다.
대신 임의의 코드를 실행할 수 있는 '지연' 콜백하는 합니다 setTimeout () 함수 (또는 해당 함수 호출).
재발했지 시도할 경우 " pause"; # 39 에서 루프을 관심용 you& 본질적으로 " hang";; d javascript 인터프리터 일정 기간 동안. 자바스크립트 실행 코드에서 때문에 단 하나의 스레드할 you& 때 아무것도 루프을 실행할 수 있는 # 39, re (다른 어떤 이벤트 핸들러도 불렀으매 얻을 수 있다). 따라서 변경할 수 없기 때문에 결코 다른 코드를 실행할 수 있는 몇 가지 변수 기다리는 루프을 작동합니까 변화시킬 수 있는 편이다.
다음과 같은 함수를 사용하여 지연입니다
var delay = ( function() {
var timer = 0;
return function(callback, ms) {
clearTimeout (timer);
timer = setTimeout(callback, ms);
};
})();
사용법:
delay(function(){
// do stuff
}, 5000 ); // end delay
크레딧 gnu. orghttp://www. 사용자 CMS http://schmidt. devlib. https://stackoverflow.com/q/1909441/1066234
console.log(1);
await new Promise(resolve => setTimeout(resolve, 3000)); // 3 sec
console.log(2);
, 디이브이 노데지스 대상이 될 경우 이 보다 효율적인 to use this (it& # 39 의 프로미시프리드 setTimeout 미리 정의된 함수):
await setTimeout[Object.getOwnPropertySymbols(setTimeout)[0]](3000) // 3 sec
이 같은 기능을 하도록 만들 수 있는 최선의 방법은 기다리는 대기 밀리 초, 이 함수는 밀리초입니다 나타난 것이다.
<! - begin 스니핏: js 숨기십시오: > 거짓값 -;
function waitSeconds(iMilliSeconds) {
var counter= 0
, start = new Date().getTime()
, end = 0;
while (counter < iMilliSeconds) {
end = new Date().getTime();
counter = end - start;
}
}
끝 - < 스니핏 >;!
답변 에 따라 조지프 Silber& # 39, I would do it like that, 좀 더 일반.
사용하는 함수가 했습니다 (let& # 39 에 따라 생성하시겠습니까 질문):
function videoStopped(newState){
if (newState == -1) {
alert('VIDEO HAS STOPPED');
}
}
및 외상때문에 대기 기능:
function wait(milliseconds, foo, arg){
setTimeout(function () {
foo(arg); // will be executed after the specified time
}, milliseconds);
}
마지막에 했습니다.
wait(5000, videoStopped, newState);
내가 사용하는 PC 게임, IE 에서 모서리까지 迈向 실행하십시오. 또한 IE 모서리까지 셀프클로스 7 초 후에.
파이어폭스, 구글 크롬 게임 이렇게 시작하는 데 사용할 수 없습니다.
<html<body>
<a href="E:\game\game.exe" name="game" onmouseout="waitclose(7000);"> game
<img src="game.jpg" width="100%" height="97%" ></a>
<script>
function waitclose(ms){
var start = new Date().getTime();var end=start;
while(end < start + ms) {end = new Date().getTime();}
window.open('', '_self', ''); window.close();
}
</script>
</body></html>