Skip to main content

实现一个异步的 sleep 函数

Promise

const sleep = (time) => {
return new Promise((resolve) => {
setTimeout(resolve, time)
})
}

sleep(1000).then(() => {
console.log(1)
})

Generator

function* sleepGenerator(time) {
yield new Promise((resolve) => {
setTimeout(resolve, time)
})
}

sleepGenerator(1000)
.next()
.value.then(() => {
console.log(1)
})

async await

function sleep(time = 0) {
return new Promise((resolve) => {
let timeId = setTimeout(function () {
resolve(timeId)
}, time)
})
}

await sleep(1000)

console.log("1")

ES5

function sleep(callback, time) {
if (typeof callback === 'function') setTimeout(callback, time)
}

function output() {
console.log(1)
}
sleep(output, 1000)