async和await

参考(博主写的很详细)

今天在看项目代码的时候看到这样的代码

async(dispatch) => {
        try {
            let headers = getTokenHeader({});
            const data = (await axios.get(`${baseUrl}n/AllEvents.do${query}`)).data;
            dispatch({
                type:   ,
                data: data.data
            });
        } catch (error) {
            dispatch({
                type:,
                error: new Error('获取信息失败')
            });
        }
    };

然后发现自己并不知道async是什么,await是什么,故今天便学习记录一下

async是异步的意思

async后面的函数就是异步函数,这意味着该函数不会阻塞后面函数的执行

使用

语法;async function

调用:就像函数一样调用就行了

<script>
    async function fn()
    {
        return 'hahahah async';
    }
    fn();
    console.log('我是后面一个');
</script>

async的函数返回的是一个promise对象,获取promise对象,我们可用then

console.log(fn());

<script>
    async function fn()
    {
        return 'hahahah async';
    }

    fn().then(function(res){
        console.log(res);
        });
    console.log('我是后面一个');
</script>

 分析

前面说了async的函数返回的是一个promise对象,当调用该函数时,内部会调用Promise.solve() 方法把它转化成一个promise 对象作为返回,并可以在指定状况下触发指定函数。比如fn()函数内部出错,那么就会调用Promise.reject() 返回一个promise 对象

async function fn(flag)
    {
        if(flag)
        return 'hahahah is true';
        else
            return 'wuwuwu is false';
    }

    fn(true).then(function(res){
        console.log(res);
        });
    fn(false).then(function(res){
        console.log(res);
        });

await是等待的意思

就是到await的时候就要暂停一下,后面的代码也要等,直到后面的promise对象执行完毕,然后拿到promise resolve 的值并进行返回,返回值拿到之后,它继续向下执行。

原文地址:https://www.cnblogs.com/ellen-mylife/p/11108649.html