经常有业务需求,要等几秒才进行下一步操作。还可以进行防抖节流。
一、传统方法,回调函数
// 利用回调函数
function sleep(callback,time) {
if(typeof callback === 'function') {
setTimeout(callback,time)
}
}
function output(){
console.log(1);
}
sleep(output,1000);
复制代码
二、从Promise方面进行实现
// Promise
const sleep = (time) => {
return new Promise((resolve, reject) => {
setTimeout(resolve, time);
})
}
sleep(5000).then(() => {
console.log('业务代码')
})
复制代码
三、从async/await进行实现
const sleep = (time) => {
return new Promise((resolve, reject) => {
setTimeout(resolve, time);
})
}
async function sleepAsync () {
await sleep(5000);
console.log('业务代码')
}
sleepAsync()
复制代码
四、从Generator 配合yield进行实现
//Generator
const sleep = (time) => {
return new Promise((resolve, reject) => {
setTimeout(resolve, time);
})
}
function* sleepGenerator(time) {
yield sleep(time);
}
sleepGenerator(5000).next().value.then(()=>{
console.log('业务代码')
})
复制代码