参考(博主写的很详细)
今天在看项目代码的时候看到这样的代码
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 的值并进行返回,返回值拿到之后,它继续向下执行。