웹 애플리케이션 (JSF/Primefaces)에서 처음에는 '로딩'메시지로 막혀있는 패널이 여러 개 있지만, 일부 자바 스크립트를 작성하려고합니다. 1 ~ 15 초 후에 각 패널을 무작위로 차단 해제하도록 설정합니다 (단, 패널 1은 8 초 후 차단 해제, 패널 2는 4 초 후 차단 해제 될 수 있음).무작위 간격으로 자바 스크립트 타임 아웃 이벤트
나는이 작업을 수행하려면 다음 코드를 작성했습니다 :
는function hideBlockUI() {
var buiIndex = 0;
while(true) {
var buiComponent = PF('bui_' + buiIndex);
if (buiComponent != null) {
(function(buiIndex) {
setTimeout(function() {hideBUI('bui_' + buiIndex);}, Math.floor((Math.random() * 15) + 1));
})(buiIndex);
} else {
break;
}
buiIndex++;
}
PF('poll').stop();
}
function hideBUI(name) {
PF(name).hide();
}
내가보고 오전 동작은 모든 패널이 아니라 다른 임의의 간격보다, 각 실행에 정확히 같은 시간에 차단을 해제한다는 것입니다. hideBUI()에 전달 된 이름이 정확하고 생성 된 임의의 시간 제한이 다르지만 동작이 계속 유지되는지 확인했습니다. 내가 도대체 뭘 잘못하고있는 겁니까?
편집 : 숨길 구성 요소가 얼마나 많은 패널에 따라 bui_0, bui_1 ... bui_n이라는 이름으로 표시되는지는 런타임까지 알 수 없습니다.
아 예 그했다 그것을 사용하여
setTimeout
documentation수정을 참조하십시오. –