三种异步示例
程序员文章站
2024-01-28 10:43:22
...
三种异步方式的实现
// #异步代码的类型
/// 回调地狱型
/*
function ajax(fn){
setTimeout(()=>{
console.log('settimeout')
fn()
},1000)
}
ajax(()=>{
console.log(111)
ajax(()=>{
console.log(222)
ajax(()=>{
console.log(333)
})
})
})
*/
// promise 型
function delay(msg){
return new Promise((resolve,reject)=>{
setTimeout(()=>{
resolve(msg)
},1000)
})
}
/*
delay('qiphon')
.then((msg)=>{
console.log(msg)
return delay(2)
})
.then((msg)=>{
console.log(msg)
return delay(3)
})
.then(msg=>{
console.log(msg)
})
.catch((err)=>{
console.log(err)
})
*/
// async + await
function delay2(msg){
return new Promise((resolve,reject)=>{
setTimeout(()=>{
resolve(msg)
},1000)
})
}
async function asy(){
await delay2(1).then(msg=>{
console.log(msg)
})
await delay2(2).then(msg=>{
console.log(msg)
})
await delay2(3).then(msg=>{
console.log(msg)
})
}
asy()