2011-05-07 2 views
0

임의의 만료 시간을 EACH 반복하고 싶습니다. 이 예제는 만료 시간을 5 ~ 15 초 사이에서 무작위로 추출하여 영원히 사용합니다.TimerManager 임의의 recurTime

var timer = qx.util.TimerManager.getInstance(); 
timer.start(function(userData, timerId) 
    { 
     this.debug("timer tick"); 
    }, 
    (Math.floor(Math.random()*11)*1000) + 5000, 
    this, 
    null, 
    0 
); 

나는 또한 순수 JS 솔루션을 허용합니다.

http://demo.qooxdoo.org/current/apiviewer/#qx.util.TimerManager

답변

1

문제는 TimerManager.start에 recurTime 인수가 정상 기능 정상 인자이므로 번만 함수가 호출 될 때 평가된다는 점이다. 반복해서 재평가되는 표현이 아닙니다. 즉, TimerManager를 사용하면 등거리 실행 만 가능합니다.

예를 들어 손으로 원하는대로 코드를 작성해야합니다. qx.event.Timer.once을 사용하여 각 호출마다 새 시간 초과를 계산하십시오.

편집 :

var that = this; 
function doStuff(timeout) { 
    // do the things here you want to do in every timeout 
    // this example just logs the new calculated time offset 
    that.debug(timeout); 
} 

function callBack() { 
    // this just calls doStuff and handles a new time offset 
    var timeout = (Math.floor(Math.random()*11)*1000) + 5000; 
    doStuff(timeout); 
    qx.event.Timer.once(callBack, that, timeout); 
} 

// fire off the first execution 
qx.event.Timer.once(callBack, that, 5000); 
: 여기

(이이 qooxdoo 클래스의 맥락에서 일 것이다) 당신을 위해 올바른 방향으로 갈 수있는 코드입니다