use*_*237 16 javascript sleep function delay wait
对不起,如果此问题已在此处提出,我找不到合适的答案.
我想创建一个JavaScript睡眠/延迟/等待函数,我可以在脚本中的任何地方调用它,比如jQuery .delay()
我无法使用setTimeout,因为我有一个由php生成的脚本,因此无法将其放入两个不同的函数中,中间超时.我需要创建一个允许我这样做的功能
alert("time started");
sleep(4000);
alert("time up");
Run Code Online (Sandbox Code Playgroud)
我真的不想使用jQuery.
Dee*_*eep 15
你不能只是放入一个函数来暂停Javascript.
你必须使用 setTimeout()
例:
function startTimer () {
timer.start();
setTimeout(stopTimer,5000);
}
function stopTimer () {
timer.stop();
}
Run Code Online (Sandbox Code Playgroud)
编辑:
对于用户生成的倒计时,它就是这么简单.
HTML:
<input type="number" id="delay" min="1" max="5">
Run Code Online (Sandbox Code Playgroud)
JS:
var delayInSeconds = parseInt(delay.value);
var delayInMilliseconds = delayInSeconds*1000;
function startTimer () {
timer.start();
setTimeout(stopTimer,delayInMilliseconds);
}
function stopTimer () {
timer.stop;
}
Run Code Online (Sandbox Code Playgroud)
现在你只需要添加一个触发器startTimer(),例如onchange.
Ani*_*wal 12
这是使用新的 async/await 语法的解决方案。
async function testWait() {
alert('going to wait for 5 second');
await wait(5000);
alert('finally wait is over');
}
function wait(time) {
return new Promise(resolve => {
setTimeout(() => {
resolve();
}, time);
});
}
Run Code Online (Sandbox Code Playgroud)
注意:只能在异步函数中调用函数等待
Pau*_* S. 10
您将不得不使用setTimeout,因此我将您的问题视为
我有一个由PHP生成的脚本,因此无法将其放入两个不同的函数中
什么阻止您在脚本中生成两个函数?
function fizz() {
var a;
a = 'buzz';
// sleep x desired
a = 'complete';
}
Run Code Online (Sandbox Code Playgroud)
可以改写为
function foo() {
var a; // variable raised so shared across functions below
function bar() { // consider this to be start of fizz
a = 'buzz';
setTimeout(baz, x); // start wait
} // code split here for timeout break
function baz() { // after wait
a = 'complete';
} // end of fizz
bar(); // start it
}
Run Code Online (Sandbox Code Playgroud)
你会注意到a内部baz启动就像buzz调用它一样,在调用结束时,a内部foo将是"complete".
基本上,将所有变量包装在函数中,将所有变量移动到包装函数中,以便包含的函数继承它们.然后,每次你遇到时wait NUMBER seconds你echo一个setTimeout,结束该功能,并开始了新的功能,拿起你离开的地方.