实现一个sleep函数从promise,async/await,generator方面

453 阅读1分钟
1.promise

const sleep=(time)=>{
   return new Promise(resolve=>
                setTimeout(resolve,time)
        )
}
sleep(2000).then(()=>{
  console.log('sleep...')  
})

2.async/await

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

async function sleepAsync(){
     console.log('sleep start...')
     await sleep(2000);
     console.log('sleep end...')
}

sleepAsync()

3.generator

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

function* sleepGenerator(){  
  yield sleep(2000)

}
sleepGenerator().next().value.then(()=>{
  console.log('iam middle')
})

4.es5 setTimeout

function sleep(cb,time){
   if(typeod cb === 'function'){
     setTimeout(cb,time)
 }
  
 function output(){
   console.log('1')
}
sleep(output,1000);