行动之间的延迟
有没有一种方法可以在JavaScript执行另一个操作之前进行睡眠?
例:
var a = 1+3;
// Sleep 3 seconds before the next action here
var b = a + 4;
你可以使用setTimeout
来达到类似的效果:
var a = 1 + 3;
var b;
setTimeout(function() {
b = a + 4;
}, (3 * 1000));
这并不真正“睡眠”JavaScript--它只是在一定的持续时间(以毫秒为单位)后执行传递给setTimeout
的函数。 尽管可以为JavaScript编写睡眠函数,但如果可能,最好使用setTimeout
,因为它不会在睡眠期间冻结所有内容。
如果你确实需要sleep()
来测试某些东西。 但请注意,它会在大多数情况下在调试时崩溃浏览器 - 可能这就是为什么您需要它。 在生产模式中,我会注释掉这个功能。
function pauseBrowser(millis) {
var date = Date.now();
var curDate = null;
do {
curDate = Date.now();
} while (curDate-date < millis);
}
不要在循环中使用new Date()
,除非想要浪费内存,处理能力,电池以及可能的设备使用寿命。
ECMAScript 6版本,使用带有“代码阻塞”的yield的生成器:
因为原来的问题是在七年前发布的,所以我没有用确切的代码来回答问题,因为这太简单了,并且已经得到解答。 这应该有助于解决更复杂的问题,例如,如果您至少需要两次睡眠,或者您计划对异步执行进行排序。 随意修改它以适应您的需求。
let sleeptime = 100
function* clock()
{
let i = 0
while( i <= 10000 )
{
i++
console.log(i); // actually, just do stuff you wanna do.
setTimeout(
()=>
{
clk.next()
}
, sleeptime
)
yield
}
}
let clk = clock()
clk.next()
链接地址: http://www.djcxy.com/p/92155.html