.delay
jQuery 에서 메소드를 작동 시킬 수 없습니다 .
$.delay(3000); // not working
$(queue).delay(3000); // not working
제어되지 않는 변경 값이 다른 값보다 크거나 같을 때까지 대기하기 위해 while 루프를 사용하고 있으며 X 초 동안 실행을 중단 할 수있는 방법을 찾을 수 없습니다.
.delay
jQuery 에서 메소드를 작동 시킬 수 없습니다 .
$.delay(3000); // not working
$(queue).delay(3000); // not working
제어되지 않는 변경 값이 다른 값보다 크거나 같을 때까지 대기하기 위해 while 루프를 사용하고 있으며 X 초 동안 실행을 중단 할 수있는 방법을 찾을 수 없습니다.
답변:
$ .delay는 큐에서 애니메이션을 지연시키는 데 사용되며 실행을 중단하지 않습니다.
while 루프를 사용하는 대신 다음을 사용하여 매초마다 검사를 수행하는 메소드를 재귀 적으로 호출해야합니다 setTimeout
.
var check = function(){
if(condition){
// run when condition is met
}
else {
setTimeout(check, 1000); // check again in a second
}
}
check();
setTimeout()
.
이런 식으로 일부 작업을 지연시킬 수도 있습니다.
setTimeout(function (){
// Something you want delayed.
}, 5000); // How long do you want the delay to be (in milliseconds)?
jQuery의 delay
기능은 효과 및 효과 대기열과 함께 사용하기위한 것입니다. delay
문서 및 예제를 참조하십시오 .
$('#foo').slideUp(300).delay(800).fadeIn(400);
변경 사항에 대한 변수를 관찰하려면 다음과 같이 할 수 있습니다
(function() {
var observerInterval = setInterval(function() {
if (/* check for changes here */) {
clearInterval(observerInterval);
// do something here
}
}, 1000);
})();
자바 스크립트 만 jQuery없이 작동합니다.
<!DOCTYPE html>
<html>
<head>
<script>
function sleep(miliseconds) {
var currentTime = new Date().getTime();
while (currentTime + miliseconds >= new Date().getTime()) {
}
}
function hello() {
sleep(5000);
alert('Hello');
}
function hi() {
sleep(10000);
alert('Hi');
}
</script>
</head>
<body>
<a href="#" onclick="hello();">Say me hello after 5 seconds </a>
<br>
<a href="#" onclick="hi();">Say me hi after 10 seconds </a>
</body>
</html>
ES6 기능을 사용 중이고 비동기 기능을 사용하는 경우이 기능을 사용하여 특정 시간 동안 코드 실행을 효과적으로 중지 할 수 있습니다.
const delay = millis => new Promise((resolve, reject) => {
setTimeout(_ => resolve(), millis)
});
이것은 당신이 그것을 사용하는 방법입니다 :
await delay(5000);
요청 된 밀리 초 동안 정지하지만 비동기 함수 인 경우에만 중단됩니다 . 아래 예 :
const myFunction = async function() {
// first code block ...
await delay(5000);
// some more code, executed 5 seconds after the first code block finishes
}