循环阻塞
/*
for setTimeout
*/
// 我们想每次循环暂停1秒,并且输出当前的循环值。
var i=1
while (true) {
setTimeout(function() {
console.log(i)
}, 1000)
if (i=5) break
i++
}
// 返回结果 | 5
// 所以 setTimeout 显示不适用于上面场景,在它阻塞1秒的这段时间,while已经跑了5次循环,累计到了5。
/*
setInterval
*/
var i=1
var int = setInterval(function f() {
console.log(i)
if (i===10) clearInterval(int) // 停止
i++
}, 1000)
// 返回结果 (1,2,3,4,5,6,7,8,9,10)
// setInterval 就是用于解决上面这种应用场景