2016년 12월 1일 목요일

[javascript]불특정(랜덤) 시간마다 특정 함수 실행하기

음 이거는 공개 안할려다가 한다.


var _interval = setInterval(func,120000);

setInterval  함수를 이용하면 특정 시간마다 함수를 실행할수 있는데

함수등록시 시간값이 고정으로 들어가기 때문에  일정한 시간 간격을 두고 실행되기

때문에 내가 원하는 결과를 얻을수 없었다.

그럼 어떻게 해야하는가?

1.먼저 랜덤 시간을 리턴 하는 함수를 하나 만든다.

난 2분안짝으로 초로 리턴 하게끔 했다.

//0~120초 사이 리턴 랜덤 초
function getRandSec(){
return Math.floor(Math.random() * 120) + 1;
}

2. 그리고 2분마다 실행하는 인터벌 함수를 정의한다.

var _interval = setInterval(targetFunction,120000);

3.실행할 함수 내에서 setTimeout 으로 실행하되 시간 값을 랜덤으로 준다.


function targetFunction(){
var sec = getRandSec();
console.log(sec);
if(_autoStartStatus){
setTimeout(function(){

                //여기가 실제로 실행되는 비지니스 로직.

}, sec*1000);
}
}

정리.

인터벌 함수를 통해 targetFunction 함수를 2분마다 실행하고 실행된 targetFunction 함수 내에서 setTimeout 함수로 일정시간뒤에 비지니스 로직을 수행하는데 시간값을
getRandSec() 를 통해서 1~120 초 사이를 얻는다. 

경고.

랜덤으로 얻는 시간 값의 범위 최대값이 인터벌 파라미터로 넣는 시간값보다 작거나 같아야 한다.



댓글 없음:

댓글 쓰기

[lunux]리눅스 폴더별 용량 확인

리눅스 폴더별 용량 확인 조회 하고자 하는 디렉토리 리스트가있는 경로로 이동후 du -h --max-depth=1