美文网首页
async的用法

async的用法

作者: Amy_yqh | 来源:发表于2019-05-12 15:40 被阅读0次

asnyc基础用法

function fn(){
    return new Promise((resolve)=>{
        setTimeout(()=>{
            resolve('hi')
        },1000)
    })
}

(async function(){
    let res1 =await fn();
    console.log('第一步')

    let res2 = await fn();
    console.log(res2+'第二步')

    let res3 = await fn();
    console.log(res3+'第三步')
})()
正如我们所见,自执行函数里面的代码会一行一行地执行,很优雅地解决了异步操作的问题。

async 的语法

async 其实就promise的语法糖。函数前面必须加一个async,异步操作的方法前加一个await 关键字。顾名思义,就是让你等一下,执行完了再继续往下走。注意:await 只能在async函数中执行,否则会报错。
再来一个栗子

let obj = {
    say:async function(){
       let result =  await fn()
       console.log('say:'+result)
    },
    eat: async ()=>{
        let result = await fn();
        console.log('eat:'+result)
    }
}
如果我想先执行完eat方法,再执行say方法。很简单
let  aa  = async function(){
    await obj.eat();
    await obj.say()
}
aa()
就这样简单粗暴。

async 解决异常情况
promise如果返回的是一个错误的结果,如果没有做异常处理的话,就会报错,所以我们使用try..catch来捕获一下异常就可以可以拉

    function fn2(value){
        return new Promise((resolve,reject)=>{
            if(value=='a'){
                console.log('success')
                resolve()
            }else{
                console.log('error')
                reject('错误')
            }
        })
    }
// 使用try...catch 针对promise成功,与错误的做出不同的处理
    async function eat(value){
        try {
            await fn2(value);
        } catch (err) {
            console.log(err);
        }
    }

相关文章

网友评论

      本文标题:async的用法

      本文链接:https://www.haomeiwen.com/subject/bjxcaqtx.html