Javascript 正确使用setTimeout
我正试图使其成为document.write()9,然后暂停1秒,写入8,然后暂停1秒,写入7,然后暂停1秒,依此类推,直到达到0。但现在它只是一次打印出整个内容。我做错了什么Javascript 正确使用setTimeout,javascript,settimeout,Javascript,Settimeout,我正试图使其成为document.write()9,然后暂停1秒,写入8,然后暂停1秒,写入7,然后暂停1秒,依此类推,直到达到0。但现在它只是一次打印出整个内容。我做错了什么 var delay = function(){ setTimeout(delay, 1000); // check again in a second } var count = 10; while (count > 0) { count--; delay(); document.write(count); }
var delay = function(){
setTimeout(delay, 1000); // check again in a second
}
var count = 10;
while (count > 0) {
count--;
delay();
document.write(count);
}
9876543210设置超时是异步的,它不会暂停执行
var count = 10;
var delay = function(){
if (count > 0) {
count--;
document.write(count);
setTimeout(delay, 1000); // check again in a second
}
}
delay();
这可能行得通,但我认为document.write在页面加载完成后不起作用。这意味着您不能在超时回调中调用它。setTimeout是异步的,它不会暂停执行
var count = 10;
var delay = function(){
if (count > 0) {
count--;
document.write(count);
setTimeout(delay, 1000); // check again in a second
}
}
delay();
这可能行得通,但我认为document.write在页面加载完成后不起作用。这意味着您不能在超时回调中调用它。两个问题:
- 调用
只会在超时过期后将要执行的函数排队,而不会暂停主线程setTimeout
是document.error,通常-如果文档已经被解析,它将被替换为新的HTML字符串。请改用适当的DOM方法document.write
每秒等待
承诺并追加span
s:
constdelay=()=>newpromise(res=>setTimeout(res,1000));
(异步()=>{
让计数=10;
而(计数>0){
等待延迟();
计数--;
document.body.appendChild(document.createElement('span')).textContent=count;
}
})();代码>两个问题:
- 调用
setTimeout
只会在超时过期后将要执行的函数排队,而不会暂停主线程
document.write
是document.error,通常-如果文档已经被解析,它将被替换为新的HTML字符串。请改用适当的DOM方法
您可以每秒等待
承诺并追加span
s:
constdelay=()=>newpromise(res=>setTimeout(res,1000));
(异步()=>{
让计数=10;
而(计数>0){
等待延迟();
计数--;
document.body.appendChild(document.createElement('span')).textContent=count;
}
})();
下面是一个使用setInterval
和console.log
var count = 9;
var timer = setInterval(delay, 1000);
function delay() {
console.log(count--);
if(count<0)
clearInterval(timer);
}
var计数=9;
var定时器=设置间隔(延迟,1000);
函数延迟(){
console.log(计数--);
if(count这里有一个使用setInterval
和console.log
var count = 9;
var timer = setInterval(delay, 1000);
function delay() {
console.log(count--);
if(count<0)
clearInterval(timer);
}
var计数=9;
var定时器=设置间隔(延迟,1000);
函数延迟(){
console.log(计数--);
如果(计算)