欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

三种异步示例

程序员文章站 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()