我在javascript中有一个睡眠函数对象-
function sleep(ms) {
var d = new Date();
var target=d.getTime()+ms;
var next = d;
console.log('Slept');
while(next.getTime()<=target) {
next=new Date();
}
console.log('Woke Up');
return;
}
使用这个sleep(5000)
打印出来(在控制台中)
Slept
5秒后
Woke Up
此代码也可以正常工作 -alert('foo'); sleep(5000); alert('bar');
首先foo
和 5 秒后bar
。
但是这个功能
//ctx is a 2d context of a canvas
function go() {
ctx.fillRect(100,100,200,200);
sleep(1000);
ctx.fillRect(200,200,300,300);
sleep(1000);
ctx.fillRect(300,300,400,400);
sleep(1000);
ctx.fillRect(400,400,500,500);
}
go();
不管用。我的意思是它正在工作,但不是它应该的方式。首先控制台显示 -
Slept
//1 second later
Woke Up
//1 second later
Slept
//1 second later
Woke Up
Slept
//1 second later
Woke Up
打印完所有这些消息后,将在画布上绘制图形(矩形)。有没有办法在不使用setTimeout
or的情况下完成这项工作setInterval
?
问题- 为什么fillRect
不能使用我的sleep
功能?有没有办法在不使用setTimeout
and的情况下延迟 javascript 中的某些代码setInterval
?