2013-05-08 1 views
-1

나는 자바 스크립트에서 자바 스크립트를 처음 접했고 sleep(millis) 기능을 구현하려고합니다. 기본적으로 나는 끝점에 요청을해야하고 오류가 반환되면 잠시 기다렸다가 요청을 다시합니다 ...자바에서 수면 기능

JavaScript의 setTimeout() 함수를 찾았지만 이상한 점이 있습니다. 행동, 코드가 계속 실행되고, 나는이 기능 here 발견 한 약간의 연구 후 ...

을 아무것도 할하지만 기다릴 싶지 않은 것 때문에 :

function sleep(milliseconds) { 
    var start = new Date().getTime(); 
    for (var i = 0; i < 1e7; i++) { 
    if ((new Date().getTime() - start) > milliseconds){ 
     break; 
    } 
    } 
} 

로를 이 함수는 내가 원하는 것을 정확하게 얻지 만, 그것을하기에 적절한 방법이 아닐 수도 있고 다른 해결책을 찾지 못했을 수도 있습니다. 이렇게 생각합니다 ... 당신의 의견으로는 이것을 알고 싶습니다.

  • 완벽하게 유효한 해결책은 무엇입니까?
  • 너무 나쁘지 않은 해결 방법이 있습니까?
  • 눈이 아플까요?
+1

function sleep(callBack, milliSecs) { setTimeout(callBack, milliSecs); } function first() { console.log("first"); } function second() { console.log("second"); } first(); sleep(second, 5000); 

. – NilsH

+1

이것을 확인하십시오 http://stackoverflow.com/questions/951021/what-do-i-do-if-i-want-a-javascript-version-of-sleep – 999k

+1

당신은 적절하고 자바 스크립트 방식으로 이것을 할 수 있습니다. 끝점에 아약스 요청을하고 응답을 받으면 이렇게 처리하십시오. 오류 일 경우'setTimeout'의 arg와 같은 함수를 사용하십시오. 그렇지 않으면'clearTimeout'과 timeoutId를 함께 사용하십시오. – smitrp

답변

1

글쎄, 의견이 다를 수 있습니다. 나는이 유래 주제를 자바 스크립트

http://devcheater.com/ 여러 변화를 보여줍니다 (펄, 강타, PHP, 등 등) Java 또는 다른 언어 같은 실제 절전 기능이 없습니다,하지만 당신을 이해하지만, 또한 확인할 수 있습니다 :

What is the JavaScript version of sleep()? What's the best way to implement a sleep function JavaScript? How to make a REAL sleep() in JavaScript?

1

이 코드의 문제는 코드가 완료 될 때까지 그 모든 시간을 바쁜 유지된다. 이로 인해 많은 브라우저에서 경고 대화 상자가 나타나고 페이지가 느려집니다.

The dialog

여기 난 여전히 setTimeout 기능을 사용하는 것을 선호합니다. 구문은 매우 간단합니다 :

setTimeout("codeToBeExecuted()", milliseconds); 

당신은 글로벌 변수에 필요한 데이터를 함수에서 자고 후 코드를 저장하고 전달하여 또는이처럼 단순화 할 수 있습니다 :

setTimeout('whenDone(' + numericData + ', "' + stringData + '")', milliseconds); 

JSFiddle

1

setTimeout을 좋아하지 않는다고하지만, 기본적으로 그렇게해야합니다.

function myFunc() { 
    // Do the work 
    setTimeout(myFunc, sleepInterval); 
} 

(다시 다른 기능보다는 myFunc 전화가 아닌 경우, 반복 일정을 만들려고 가정).

물론 종단 논리를 추가 할 수도 있습니다.

그런 다음 myFunc()으로 작업을 시작하십시오. setInterval을 사용할 수도 있지만 간격이 겹치기 시작하면 문제가 발생할 수 있습니다.솔루션에 관한

, 내가 옵션 3 ...

1

이 자바 스크립트에는 sleep 기능이 없다, 당신은 다음 작업을 호출 할 window.setTimeout을 사용하는 것이 좋습니다를 선택합니다. 나는 확실히 루프를 for 루프에 태우지 않을 것이다. 하지만 sleep이라는 함수로 포장해야한다면 여기에 아이디어를 줄 수있는 예제가 있습니다. jsfiddle 나는 차라리 내 실행 일정을보다 그런 식으로 반복 CPU 자원을 먹고`setTimeout`을 사용하십시오