我无法在jQuery中使用.delay
方法:
$.delay(3000); // not working
$(queue).delay(3000); // not working
我正在使用while循环等待,直到一个不受控制的更改值大于或等于另一个,并且我找不到任何方法来执行X秒执行。
答案 0 :(得分:185)
您也可以通过这种方式延迟某些操作:
setTimeout(function (){
// Something you want delayed.
}, 5000); // How long do you want the delay to be (in milliseconds)?
答案 1 :(得分:155)
$ .delay用于延迟队列中的动画,而不是停止执行。
您需要递归调用每秒使用setTimeout
执行检查的方法,而不是使用while循环:
var check = function(){
if(condition){
// run when condition is met
}
else {
setTimeout(check, 1000); // check again in a second
}
}
check();
答案 2 :(得分:8)
JavaScript setTimeout
是一个非常好的解决方案:
function funcx()
{
// your code here
// break out here if needed
setTimeout(funcx, 3000);
}
funcx();
jQuery中的delay
函数主要用于延迟jQuery动画队列中的动画。
答案 3 :(得分:8)
jQuery的delay
函数用于效果和效果队列,请参阅delay
docs及其中的示例:
$('#foo').slideUp(300).delay(800).fadeIn(400);
如果要观察变量的变量,可以执行类似
的操作(function() {
var observerInterval = setInterval(function() {
if (/* check for changes here */) {
clearInterval(observerInterval);
// do something here
}
}, 1000);
})();
答案 4 :(得分:5)
delay()
不会停止代码流,然后重新运行它。在JavaScript中没有实用的方法。所有事情都必须使用其他人提到的setTimeout
等回调函数来完成。
jQuery的delay()
的目的是在执行之前使动画队列等待。因此,例如$(element).delay(3000).fadeIn(250);
将使元素在3秒后淡入。
答案 5 :(得分:5)
如果您使用的是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
}
答案 6 :(得分:4)
Javascript是一种异步编程语言,因此您无法在一段时间内停止执行;你可以[伪]停止执行的唯一方法是使用setTimeout(),它不是延迟而是“延迟函数回调”。
答案 7 :(得分:4)
只有javascript它可以在没有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>
答案 8 :(得分:4)
es6 setTimeout
setTimeout(() => {
console.log("we waited 204586560000 ms to run this code, oh boy wowwoowee!");
}, 204586560000);
编辑:204586560000毫秒是原始问题和该答案之间的大概时间...假设我计算正确。
答案 9 :(得分:2)
function sleep(num) {
var now = new Date();
var stop = now.getTime() + num;
while(true) {
now = new Date();
if(now.getTime() > stop) return;
}
}
sleep(1000); // 1 second
alert('here');
这段代码很适合我。
答案 10 :(得分:0)
就这么简单
function delay(seconds) {
setTimeout(function() {
return 0;
}, seconds * 1000);
}