问题:每隔一秒输出一个数字。我们的js代码大概是这样的
for(var i = 0; i < 3; i++) {
setTimeout(function () {
console.log(i);
}, 1000);
};
运行这段代码会发现,程序在1秒后输出了3个3。(不但没有每隔一秒输出,而且输出的数字还全都是3)
问题解决
var start = (new Date()).getTime();
while((new Date()).getTime() - start < delay) {
continue;
}
}
for(var i = 0; i < 3; i++) {
//调用自己写的sleep函数
sleep(1000);
console.log(i);
};
``
文章探讨了JavaScript中使用setTimeout导致的异步问题,即代码在1秒后一次性输出3个3,而非期望的每秒输出一个数字。为解决这个问题,提出了使用自定义的sleep函数来实现延迟,以确保每个数字的正确顺序打印。这种方法改进了循环和setTimeout的组合,使其能按预期每秒输出一个数字。
983

被折叠的 条评论
为什么被折叠?



