持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第28天,点击查看活动详情
铃铛说点题外话
一句话前情回顾:async函数实际上是异步编程的一种解决方案,也是promise的语法糖;不配合await使用,和普通函数是一样的执行顺序。
一句话介绍今天:await
铃铛说正文
await
上一篇中我们说过async和await是一对cp,await关键字一般是在async函数里面结合使用的
那么await有什么作用呢?怎么用的呢?有什么特点呢?
- 通常使用await是后面跟上一个表达式,这个表达式也是返回一个promise对象,那么await会等到promise的状态变成fulfilled状态,之后继续执行异步函数。
- 如果await后面是一个thenable的对象,那么会根据对象的then方法调用来决定后续的值
- 如果await后面是一个普通的值,那么会直接返回这个值
- 如果await后面是一个表达式,返回的promise是rejected的状态,那么会将这个rejected结果直接作为promise函数的rejected值。
实际应用
我们会在开发中需要获取到某一项值之后再继续执行,我们可以使用async和await对后面的值进行“拦截”,比如下面的例子。我们这里以Vue项目为例子:
getList(){
setTimeout((res) => {
//这里模拟发起请求获取数据
console.log(res)
})
}
setList() {
//这里是其他的数据处理
}
async getHandleList() {
let result = await this.getList()
this.setList(result)
}
上面这个例子,我们可以理解为我们需要在通过getList获取数据,但是需要获取到数据result之后再通过setList进行处理。
对于不同场景可进行相应调整
跟铃铛说再见
学习的最后一步:放松
今日冷笑话:妻子:“那天,当大黑熊出现时,你竟丢下我跑啦!可你对我说过,为了我,你不怕面对死亡!”丈夫:“是呀,我是这么说的,可是那只熊是活的呀。”?
放松结束,猜猜明天会说讲些什么吧