從 Promise、Async/Await 、Generator等角度實現一個 sleep 函數

常常有業務需求,要等幾秒才進行下一步操做。還能夠進行防抖節流。bash

1、傳統方法,回調函數

// 利用回調函數
function sleep(callback,time) {
  if(typeof callback === 'function') {
     setTimeout(callback,time)
  }
 }
function output(){
    console.log(1);
}
sleep(output,1000);
複製代碼

2、從Promise方面進行實現

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

sleep(5000).then(() => {
    console.log('業務代碼') 
})
複製代碼

3、從async/await進行實現

const sleep = (time) => {
  return new Promise((resolve, reject) => {
    setTimeout(resolve, time);
  })
}
async function sleepAsync () {
    await sleep(5000);
    console.log('業務代碼')
}
sleepAsync()
複製代碼

4、從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('業務代碼')
})
複製代碼
相關文章
相關標籤/搜索