持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第27天,点击查看活动详情
铃铛说点题外话
一句话前情回顾:BFC是什么、BFC的触发方式以及BFC能解决的问题
一句话介绍今天:async和await
铃铛说正文
async和await是一对cp,他俩必须一起出现。
async
我们之前在写异步代码的时候,我们会采用回调函数,但是回调函数可能会导致“回调地狱”。之后ES6中提出了Promise,那么async我们就可以看做是Promise的一种语法糖。在promise中我们会将拿到的结果放进resolve中,之后结果可以在then中进行成功的回调。那async是怎么实现异步的呢?
async fucntion foo1 (){}
const foo2 = async () => {}
上面说了async和await是一对cp,要一起出现,那么如果只出现async会怎么样呢? 如果async函数里面没有await的时候,这个async的函数执行顺序会和普通函数的执行顺序一样。我们也可以理解为async无用。
async的返回值
async函数的返回值一依旧是promise对象,如果函数内部没有任何的返回值,那么相当于返回Undefined。也就是相当于返回了Promise.resolve(undefined)。如果返回的值是一个number类型呢,就是相当于Promise.resolve(number)。除了返回值的类型,异步函数中的异常,会被称为异步函数的返回的Promise.reject()
async function foo() {
throw new Error("error")
}
foo().then(res => {
console.log(res)
}).catch(error => {
console.log(error)
})
以上案例我们可以理解为一个函数外层使用async,没有配合使用await的时候,和我们直接定义普通函数没有区别。
跟铃铛说再见
学习的最后一步:放松
今日冷笑话:我有一朋友经常回家只要喊芝麻开门,他们家的门就开了。后来我终于忍不住问他这门开门的原理是什么。然后他白了我一眼,说了句:我妹妹名字叫芝麻。。?
放松结束,猜猜明天会说讲些什么吧