for(var i=0;i<5;i++){
console.log(i) // 01234
}
console.log(i) //5 按顺序执行
for (var i = 0; i < 5; i++) {
setTimeout(() => {
console.log(i) // 5个5
}, 1000);
}
console.log('第几个执行',i) //第一个执行
解决上述的三种办法
var output=(i)=>{
setTimeout(() => {
console.log(i)
}, i*1000);
}
for (var i = 0; i < 5; i++) {
output(i)
}
console.log('第几个执行', i) //第一个执行
for(let i=0;i<5;i++){
console.log(i) // 01234
}
console.log(i) // i is not defined
for(var i=0;i<5;i++){
(function(){
setTimeout(() => {
console.log(i) // 一秒一个5 这是一个坑 自执行函数没有传参数
}, i*1000);
})(i)
}
for(var i=0;i<5;i++){
(function(i){
setTimeout(() => {
console.log(i) // 隔一秒01234
}, i*1000);
})(i) //
}
console.log(i)// 第一个执行
const tasks = []; // 这里存放异步操作的 Promise
const output = (i) => new Promise((resolve) => {
setTimeout(() => {
console.log(new Date, i);
resolve();
}, 1000 * i);
});
// 生成全部的异步操作
for (var i = 0; i < 5; i++) {
tasks.push(output(i));
}
// 异步操作完成之后,输出最后的 i
Promise.all(tasks).then(() => {
setTimeout(() => {
console.log('执行完之后在执行', i); // 最后一个执行
}, 1000);
});
网友评论