1.javascript 每隔一秒 打印 1,2,3,4,5

1.利用let(块级作用域)

for(let i=0;i<5;i++){
    setTimeout(function(){
        console.log(i)
    },1000*i)
}

2.利用闭包

for(var i=0;i<5;i++){
    (function(i){
        setTimeout(function(){
            console.log(i)
        },1000*i)
    })(i)
}

3.利用Promise

var arr = [];
var output = (i) => new Promise(resolve => {
  setTimeout(()=>{
    console.log(i)
    resolve()
  }, 1000*i)
});
for (var i=0; i<5; i++) {
  arr.push(output(i))
}
Promise.all(arr);

2.实现一个sleep函数,比如 sleep(1000) 意味着等待1000毫秒

1.利用Promise和setTimeout

function sleep(ms){
    return new Promise((resolve)=>{
        setTimeout(resolve,ms)
    })
}

sleep(2000).then(()=>{
    console.timeEnd('test');
})

2.利用async/await和Promise,setTimeout

function sleep(ms) {
    return new Promise(function(resolve, reject) {
        setTimeout(resolve, ms)
    })
}
async function init() {
    await sleep(3000);
}
init().then(() => {
    console.log(3000)
})

smallgang
232 声望7 粉丝

« 上一篇
vue-1