关于异步处理的几个阶段

settimeout函数

function ajax(){
    setTimeout(()=>{
        console.log('你好')
    },1000)
}
ajax()
console.log('执行结果')
//回调函数进行处理,先打印执行结果:你好,执行结束
//回调函数解决顺序问题
function ajax(fn){
    setTimeout(()=>{
        console.log('你好')
        fn()
    },1000)
}
ajax(()=>{
    console.log('执行结束')
})
console.log('执行结果')
 //callback回调地狱 
function ajax(fn){
    setTimeout(()=>{
        console.log('你好')
        fn()
    },1000)
}
ajax(()=>{
    console.log('执行结束')
    // 里面的ajax从外层开始回调的哦console.log('执行结束2')根据放的位置不同
    //也会在不同时候打印呢,
    ajax(()=>{
        ajax(()=>{
            ajax(()=>{
                console.log('执行结束2')
            })
        })
       
    })
})
console.log('执行结果')

promise下一代异步解决方案
在promise中处理异步


function delay(word){
    return new Promise((resolve,reject)=>{
        setTimeout(()=>{
            resolve(word)
        },2000)
    })
}
delay('哪吒')
    .then((word)=>{
        console.log(word)
        return delay('杨戬')
    })
    .then((word)=>{
        console.log(word)
        return delay('观音菩萨')
    })
    .then((word)=>{
       console.log(word)
    })

async最终异步处理结果,使用koa可以运行出结果,浏览器并不行啊,我亲测过

  function delay(word){
        return new Promise((resolve,reject)=>{
            setTimeout(()=>{
                resolve('hello'+word)
            },2000)
        })
    }
    async function start(){
        const word1 = await delay('孙悟空')
        console.log(word1)
        const word2 = await delay('唐僧')
        console.log(word2)
        const word3 = await delay('猪八戒')
        console.log(word3)
    }
    start()

猜你喜欢

转载自www.cnblogs.com/smart-girl/p/11270625.html