js闭包--关于在for循环中每隔一秒打印一次
上篇我们介绍了js闭包-关于在for循环中绑定事件打印变量i我们可以将结果一次性打印出0 1 2 3 4,那么下面我介绍一下每隔一秒钟一次打印出 0 1 2 3 41000*i是重点es5方法:for (var i = 0; i < 5; i++) {(function (j) {setTimeout(function() {console.log(new...
·
上篇我们介绍了js闭包-关于在for循环中绑定事件打印变量i
我们可以将结果一次性打印出0 1 2 3 4,那么下面我介绍一下每隔一秒钟一次打印出 0 1 2 3 4
1000*i是重点
es5方法:
for (var i = 0; i < 5; i++) {
(function (j) {
setTimeout(function() {
console.log(new Date, j);
}, 1000 * j);
})(i);
}
setTimeout(function() {
console.log(new Date, i);
}, 1000 * i);
结果
es6方法:
const tasks = [];
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(new Date, i);
}, 1000);
});
结果:
es7方法:
const sleep = (timeountMS) => new Promise((resolve) => {
setTimeout(resolve, timeountMS);
});
(async () => {
for (var i = 0; i < 5; i++) {
if (i > 0) {
await sleep(1000);
}
console.log(new Date, i);
}
//循环完成之后
await sleep(1000);
console.log(new Date, i);
})();
更多推荐
已为社区贡献5条内容
所有评论(0)