# 实现一个 sleep 函数
比如 sleep(1000) 意味着等待1000毫秒,可从 Promise、Generator、Async/Await 等角度实现
# Promise
const sleep = time =>{
new Promise((resolve) => {
setTimeout(resolve, time)
})
}
sleep(1000).then(() => {
console.log(1)
})
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# Generator
function *sleep(time) {
yield new Promise(resolve => {
setTimeout(resolve, time)
})
}
sleep(1000).next().value.then(() => {
console.log(1)
})
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# async
async function sleep(time, func) {
await new Promise(resolve => setTimeout(resolve, time))
return func()
}
sleep(1000, () => {
console.log(1)
})
1
2
3
4
5
6
7
2
3
4
5
6
7
# ES5
function sleep(callback,time) {
if(typeof callback === 'function')
setTimeout(callback,time)
}
function output(){
console.log(1);
}
sleep(output,1000);
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9