解决异步请求方法
1.回调函数 (会产生回调地狱)
2.promise (不会产生回调地狱)
3.genrator (不会产生回调地狱)
4.async+await ( 不会产生回调地狱)
举例
使用多种方式实现一个类似于sleep的函数,调用await sleep (1000)可以休眠1000毫秒?
可从 Promise、Generator、Async/Await 等角度实现
4种方式:
//Promise
const sleep = time => {
return new Promise(resolve => setTimeout(resolve,time))
}
sleep(1000).then(()=>{
console.log(1)
})
//Generator
function* sleepGenerator(time) {
yield new Promise(function(resolve,reject){
setTimeout(resolve,time);
})
}
sleepGenerator(1000).next().value.then(()=>{console.log(1)})
//async
function sleep(time) {
return new Promise(resolve => setTimeout(resolve,time))
}
async function output() {
let out = await sleep(1000);
console.log(1);
return out;
}
output();
//ES5
function sleep(callback,time) {
if(typeof callback === ‘function’)
setTimeout(callback,time)
}
function output(){
console.log(1);
}
sleep(output,1000);