/***
* 1 写出执行后的结果
*/
for (var i = 0; i < 5; i++) {
setTimeout(function(){
console.log(i)
}, 1000)
}
// 结果:同时打印出5个5
/**
* 2 如何打印出501234
*/
for(let i = 0; i < 5; i++) {
setTimeout(function(){
console.log(i)
}, 2000)
}
console.log(5)
// 先打印出5, 2秒后同时打印出01234,其他方法:
for(var i = 0; i < 5; i++) {
(function(j){
setTimeout(function() {
console.log(j)
}, 2000)
})(i)
}
console.log(i)
// 或者:
const output = function (j) {
setTimeout(function () {
console.log(j)
}, 2000)
}
for (var i = 0; i < 5; i++) {
output(i)
}
console.log(i)
/**
* 3 如何打印出012345, 0秒打印出0,1秒打印出1等等
*/
//**************** 第一种方法:*****************
for (var i = 0; i < 5; i++) {
(function(j){
setTimeout(() => {
console.log(j)
}, 1000 * j)
})(i)
}
setTimeout(() => {
console.log(i)
}, 1000 * i)
// 第二种方法:使用promise
const tasks = []
for (var i = 0; i < 5; i++) {
(function (j) {
tasks.push(new Promise((resolve, reject) => {
setTimeout(() => {
console.log(j)
resolve()
}, 1000 * j)
}))
})(i)
}
Promise.all(tasks).then(() => {
setTimeout(() => {
console.log(i)
}, 1000 * i)
})
// 第三种方法,使用setInterval
function count(num) {
let i = 0
const timer = setInterval(() => {
i += 1
console.log(i)
if (i >= num) {
clearInterval(timer);
}
}, 1000);
}
count(5)