sleep()的JavaScript版本是什么?
有没有比下面的sleep()的JavaScript版本是什么?,javascript,sleep,Javascript,Sleep,有没有比下面的pausecomp函数()更好的方法在JavaScript中设计sleep 函数pausecomp(毫秒) { 变量日期=新日期(); var curDate=null; do{curDate=new Date();} while(curDate日期对于神的爱,请不要做一个忙碌的等待睡眠函数。code>setTimeout和setInterval完成所有需要的操作 var showHide=document.getElementById('showHide'); 设置间隔(()=
pausecomp
函数()更好的方法在JavaScript中设计sleep
函数pausecomp(毫秒)
{
变量日期=新日期();
var curDate=null;
do{curDate=new Date();}
while(curDate日期<毫秒);
}
这不是一个复制品;我想要一个真正的睡眠在一个函数的中间,而不是在一段代码执行之前的延迟。 < P>对于神的爱,请不要做一个忙碌的等待睡眠函数。code>setTimeout和
setInterval
完成所有需要的操作
var showHide=document.getElementById('showHide');
设置间隔(()=>{
showHide.style.visibility=“初始”;
设置超时(()=>{
showHide.style.visibility=“隐藏”
}, 1000);
;
}, 2000); 代码>
你好!再见代码>在JavaScript中,你不能这样睡觉,或者更确切地说,你不应该这样。运行sleep或while循环将导致用户的浏览器挂起,直到循环完成
使用您引用的链接中指定的计时器 在JavaScript中,我重写了每个函数,以便它能尽快结束。您希望浏览器重新控制,以便它可以对DOM进行更改
每当我想在函数的中间休眠时,我就重构为使用<代码> SETTIMEOUTE()< <代码> > < /P>
编辑
任何语言中臭名昭著的睡眠或延迟功能都有很多争议。有些人会说,应该总是有一个信号或回调来启动给定的功能,另一些人会说,有时任意的延迟时间是有用的。我要说的是,在这个行业中,每个人都有自己的规则,一条规则永远不能支配任何事情
编写sleep函数非常简单,并且通过JavaScript承诺变得更加有用:
// sleep time expects milliseconds
function sleep (time) {
return new Promise((resolve) => setTimeout(resolve, time));
}
// Usage!
sleep(500).then(() => {
// Do something after the sleep!
});
第一:
定义要执行的函数,如下所示:
function alertWorld(){
alert("Hello World");
}
然后使用setTimeout方法计划其执行:
setTimeout(alertWorld,1000)
注意两件事
- 第二个参数是以毫秒为单位的时间
- 作为第一个参数,您必须只传递函数的名称(引用),不带括号
我同意其他海报的观点,忙碌的睡眠只是个坏主意
但是,setTimeout不会阻止执行,它会在设置超时后立即执行函数的下一行,而不是在超时过期后执行,因此无法完成与睡眠相同的任务
方法是将函数分解为前后两部分
function doStuff()
{
//do some things
setTimeout(continueExecution, 10000) //wait ten seconds before continuing
}
function continueExecution()
{
//finish doing things after the pause
}
确保您的函数名仍然准确地描述了每一块正在执行的操作(即GatherInputHenWait和CheckInput,而不是funcPart1和funcPart2)
编辑
此方法实现了直到超时后才执行您决定的代码行的目的,同时仍然将控制权返回到客户端PC以执行它排队的任何其他内容
进一步编辑
正如评论中指出的,这绝对不会在循环中起作用。你可以做一些奇特的(丑陋的)黑客操作,使其在循环中工作,但一般来说,这只会导致灾难性的意大利面代码。如果你使用jQuery,实际上有人创建了一个“延迟”插件,它只不过是setTimeout的包装器:
// Delay Plugin for jQuery
// - http://www.evanbot.com
// - © 2008 Evan Byrne
jQuery.fn.delay = function(time,func){
this.each(function(){
setTimeout(func,time);
});
return this;
};
然后,您可以按预期在一行函数调用中使用它:
$('#warning')
.addClass('highlight')
.delay(1000)
.removeClass('highlight');
我已经在javascript sleep/wait上搜索/谷歌搜索了很多网页。。。如果您想让javascript“运行,延迟,运行”,则没有答案。。。大多数人得到的不是“跑,跑(无用的东西),跑”就是“跑,跑+延迟跑”
所以我吃了一些汉堡包,开始思考:
这里有一个有效的解决方案。。。但是你必须切碎你的运行代码
是的,我知道,这只是一个更容易阅读的重构。。。还是
//。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
//例1:
<html>
<body>
<div id="id1">DISPLAY</div>
<script>
//javascript sleep by "therealdealsince1982"; copyrighted 2009
//setInterval
var i = 0;
function run() {
//pieces of codes to run
if (i==0){document.getElementById("id1").innerHTML= "<p>code segment "+ i +" is ran</p>"; }
if (i==1){document.getElementById("id1").innerHTML= "<p>code segment "+ i +" is ran</p>"; }
if (i==2){document.getElementById("id1").innerHTML= "<p>code segment "+ i +" is ran</p>"; }
if (i >2){document.getElementById("id1").innerHTML= "<p>code segment "+ i +" is ran</p>"; }
if (i==5){document.getElementById("id1").innerHTML= "<p>all code segment finished running</p>"; clearInterval(t); } //end interval, stops run
i++; //segment of code finished running, next...
}
run();
t=setInterval("run()",1000);
</script>
</body>
</html>
展示
//《therealdealsince1982》中的javascript sleep;版权所有2009
//设定间隔
var i=0;
函数运行(){
//要运行的代码片段
如果(i==0){document.getElementById(“id1”).innerHTML=“代码段”+i+”被运行”;}
如果(i==1){document.getElementById(“id1”).innerHTML=“代码段”+i+”被运行”;}
如果(i==2){document.getElementById(“id1”).innerHTML=“代码段”+i+”被运行”;}
如果运行(i>2){document.getElementById(“id1”).innerHTML=“代码段”+i+””;}
如果(i==5){document.getElementById(“id1”).innerHTML=“所有代码段已完成运行””;clearInterval(t)}//结束间隔,则停止运行
i++;//代码段已完成运行,下一步。。。
}
run();
t=设置间隔(“运行()”,1000);
//"。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
//例2:
<html>
<body>
<div id="id1">DISPLAY</div>
<script>
//javascript sleep by "therealdealsince1982"; copyrighted 2009
//setTimeout
var i = 0;
function run() {
//pieces of codes to run, can use switch statement
if (i==0){document.getElementById("id1").innerHTML= "<p>code segment "+ i +" ran</p>"; sleep(1000);}
if (i==1){document.getElementById("id1").innerHTML= "<p>code segment "+ i +" ran</p>"; sleep(2000);}
if (i==2){document.getElementById("id1").innerHTML= "<p>code segment "+ i +" ran</p>"; sleep(3000);}
if (i==3){document.getElementById("id1").innerHTML= "<p>code segment "+ i +" ran</p>";} //stops automatically
i++;
}
function sleep(dur) {t=setTimeout("run()",dur);} //starts flow control again after dur
run(); //starts
</script>
</body>
</html>
展示
//《therealdealsince1982》中的javascript sleep;版权所有2009
//设置超时
var i=0;
函数运行(){
//要运行的代码块,可以使用switch语句
如果(i==0){document.getElementById(“id1”).innerHTML=“代码段”+i+”运行了“睡眠(1000);}
如果(i==1){document.getElementById(“id1”).innerHTML=“代码段”+i+”运行了“sleep(2000);}
如果(i==2){document.getElementById(“id1”).innerHTML=“代码段”+i+”运行了“睡眠(3000);}
如果(i==3){document.getElementById(“id1”).innerHTML=“代码段”+i+”运行”;}//将自动停止
i++;
}
函数sleep(dur){t=setTimeout(“run()”,dur);}//在dur之后再次启动流控制
run()//开始
//。。。。。。。。。。。。。。。。。
例3:
<html>
<body>
<div id="id1">DISPLAY</div>
<script>
//javascript sleep by "therealdealsince1982"; copyrighted 2009
//setTimeout
var i = 0;
function flow() {
run(i);
i++; //code segment finished running, increment i; can put elsewhere
sleep(1000);
if (i==5) {clearTimeout(t);} //stops flow, must be after sleep()
}
function run(segment) {
//pieces of codes to run, can use switch statement
if (segment==0){document.getElementById("id1").innerHTML= "<p>code segment "+ segment +" is ran</p>"; }
if (segment==1){document.getElementById("id1").innerHTML= "<p>code segment "+ segment +" is ran</p>"; }
if (segment==2){document.getElementById("id1").innerHTML= "<p>code segment "+ segment +" is ran</p>"; }
if (segment >2){document.getElementById("id1").innerHTML= "<p>code segment "+ segment +" is ran</p>"; }
}
function sleep(dur) {t=setTimeout("flow()",dur);} //starts flow control again after dur
flow(); //starts flow
</script>
</body>
</html>
展示
//《therealdealsince1982》中的javascript sleep;版权所有2009
//设置超时
var i=0;
函数流(){
运行(i);
i++;//代码段已完成运行,增量i;可以放在其他位置
睡眠(1000);
如果(i==5){clearTimeout(t);}//停止流,则必须在sleep()之后
}
功能运行(段){
//要运行的代码块,可以使用switch语句
如果(segment==0){document.getElementById(“id1”).innerHTML=“代码段”+segment+”被运行”;}
如果
<html>
<body>
<div id="id1">DISPLAY</div>
<script>
//javascript sleep by "therealdealsince1982"; copyrighted 2009
//setTimeout
var i = 0;
function flow() {
run(i);
i++; //code segment finished running, increment i; can put elsewhere
sleep(1000);
if (i==5) {clearTimeout(t);} //stops flow, must be after sleep()
}
function run(segment) {
//pieces of codes to run, can use switch statement
if (segment==0){document.getElementById("id1").innerHTML= "<p>code segment "+ segment +" is ran</p>"; }
if (segment==1){document.getElementById("id1").innerHTML= "<p>code segment "+ segment +" is ran</p>"; }
if (segment==2){document.getElementById("id1").innerHTML= "<p>code segment "+ segment +" is ran</p>"; }
if (segment >2){document.getElementById("id1").innerHTML= "<p>code segment "+ segment +" is ran</p>"; }
}
function sleep(dur) {t=setTimeout("flow()",dur);} //starts flow control again after dur
flow(); //starts flow
</script>
</body>
</html>
<html>
<body>
<div id="id1">DISPLAY</div>
<script>
//javascript sleep by "therealdealsince1982"; copyrighted 2009
//setTimeout, switch
var i = 0;
function flow() {
switch(i)
{
case 0:
run(i);
sleep(1000);
break;
case 1:
run(i);
sleep(2000);
break;
case 5:
run(i);
clearTimeout(t); //stops flow
break;
default:
run(i);
sleep(3000);
break;
}
}
function run(segment) {
//pieces of codes to run, can use switch statement
if (segment==0){document.getElementById("id1").innerHTML= "<p>code segment "+ segment +" is ran</p>"; }
if (segment==1){document.getElementById("id1").innerHTML= "<p>code segment "+ segment +" is ran</p>"; }
if (segment==2){document.getElementById("id1").innerHTML= "<p>code segment "+ segment +" is ran</p>"; }
if (segment >2){document.getElementById("id1").innerHTML= "<p>code segment "+ segment +" is ran</p>"; }
i++; //current segment of code finished running, next...
}
function sleep(dur) {t=setTimeout("flow()",dur);} //starts flow control again after dur
flow(); //starts flow control for first time...
</script>
</body>
</html>
function itemHandler(item)
{
alert(item);
}
var itemSet = ['a','b','c'];
// Each call to itemHandler will execute
// 1 second apart
for(var i=0; i<itemSet.length; i++)
{
var secondsUntilExecution = i;
itemHandler.delay(secondsUntilExecution, item)
}
alert('start');
var a = 'foo';
//lots of code
setTimeout(function(){ //Beginning of code that should run AFTER the timeout
alert(a);
//lots more code
},5000); // put the timeout here
try
{
java.lang.Thread.sleep(timeInMilliseconds);
}
catch (e)
{
/*
* This will happen if the sleep is woken up - you might want to check
* if enough time has passed and sleep again if not - depending on how
* important the sleep time is to you.
*/
}
// Basic sleep function based on ms.
// DO NOT USE ON PUBLIC FACING WEBSITES.
function sleep(ms) {
var unixtime_ms = new Date().getTime();
while(new Date().getTime() < unixtime_ms + ms) {}
}
<html>
<head>
<script type="text/javascript">
function load() {
var appletRef = document.getElementById("app");
window.java = appletRef.Packages.java;
} // endfunction
</script>
<body onLoad="load()">
<embed id="app" code="java.applet.Applet" type="application/x-java-applet" MAYSCRIPT="true" width="0" height="0" />
java.lang.Thread.sleep(xxx)
var isReady = eval('document.batchForm.ready');
isReady.value=0;
frames['rpc_frame'].location.href=url;
while (isReady.value==0) {
java.lang.Thread.sleep(250);
} // endwhile
window.frames['rpc_frame'].focus();
window.frames['rpc_frame'].print();
var Fiber = require('fibers');
function sleep(ms) {
var fiber = Fiber.current;
setTimeout(function() {
fiber.run();
}, ms);
Fiber.yield();
}
Fiber(function() {
console.log('wait... ' + new Date);
sleep(1000);
console.log('ok... ' + new Date);
}).run();
console.log('back in main');
function sleepFor( sleepDuration ){
var now = new Date().getTime();
while(new Date().getTime() < now + sleepDuration){ /* do nothing */ }
}
function sleep(milliseconds) {
var start = new Date().getTime();
for (var i = 0; i < 1e7; i++) {
if ((new Date().getTime() - start) > milliseconds){
break;
}
}
}
// This is based on the latest ES6 drafts.
// js 1.7+ (SpiderMonkey/Firefox 2+) syntax is slightly different
// run code you want to sleep here (ommit star if using js 1.7)
function* main(){
for (var i = 0; i < 10; i++) {
// to sleep for 10 milliseconds 10 times in a row
yield 10;
}
yield 5;
console.log('I just slept 5 milliseconds!');
}
// resume the given generator after ms milliseconds
function resume(ms, generator){
setTimeout(function(){
// ommit .value if using js 1.7
var nextSleep = generator.next().value;
resume(nextSleep, generator);
}, ms);
}
// initialize generator and get first sleep for recursive function
var
generator = main(),
firstSleep = generator.next().value;
// initialize recursive resume function
resume(firstSleep, generator);
function sleep(n){
var request = new XMLHttpRequest();
request.open('GET', '/sleep.php?n=' + n, false); // `false` makes the request synchronous
request.send(null);
}
<?php sleep($_GET['n']);
function after(ms, fn){ setTimeout(fn, ms); }
function every(ms, fn){ setInterval(fn, ms); }
after = (ms, fn)-> setTimeout fn, ms
every = (ms, fn)-> setInterval fn, ms
after(1000, function(){
console.log("it's been a second");
after(1000, function(){
console.log("it's been another second");
});
});
// sleep.js
var Fiber = require('fibers');
function sleep(ms) {
var fiber = Fiber.current;
setTimeout(function() {
fiber.run();
}, ms);
Fiber.yield();
}
Fiber(function() {
console.log('wait... ' + new Date);
sleep(1000);
console.log('ok... ' + new Date);
}).run();
console.log('back in main');
$ node sleep.js
wait... Fri Jan 21 2011 22:42:04 GMT+0900 (JST)
back in main
ok... Fri Jan 21 2011 22:42:05 GMT+0900 (JST)
function sleep(ms)
{
return(new Promise(function(resolve, reject) {
setTimeout(function() { resolve(); }, ms);
}));
}
sleep(2000).then(function() {
// Do something
});
function sleep(seconds){
var waitUntil = new Date().getTime() + seconds*1000;
while(new Date().getTime() < waitUntil) true;
}
sleep(2); // Sleeps for 2 seconds
const sleep = require('util').promisify(setTimeout)
async function main() {
console.time("Slept for")
await sleep(3000)
console.timeEnd("Slept for")
}
main()
async function asyncGenerator() {
while (goOn) {
var fileList = await listFiles(nextPageToken);
await sleep(3000)
var parents = await requestParents(fileList);
}
}
await new Promise(resolve => setTimeout(resolve, 5000));