细说JS系列(二十八)

78 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第28天,点击查看活动详情

铃铛说点题外话

一句话前情回顾:async函数实际上是异步编程的一种解决方案,也是promise的语法糖;不配合await使用,和普通函数是一样的执行顺序。

一句话介绍今天:await

铃铛说正文

image.png

await

上一篇中我们说过async和await是一对cp,await关键字一般是在async函数里面结合使用的

那么await有什么作用呢?怎么用的呢?有什么特点呢?

  1. 通常使用await是后面跟上一个表达式,这个表达式也是返回一个promise对象,那么await会等到promise的状态变成fulfilled状态,之后继续执行异步函数。
  2. 如果await后面是一个thenable的对象,那么会根据对象的then方法调用来决定后续的值
  3. 如果await后面是一个普通的值,那么会直接返回这个值
  4. 如果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进行处理。

对于不同场景可进行相应调整

跟铃铛说再见

学习的最后一步:放松

今日冷笑话:妻子:“那天,当大黑熊出现时,你竟丢下我跑啦!可你对我说过,为了我,你不怕面对死亡!”丈夫:“是呀,我是这么说的,可是那只熊是活的呀。”

放松结束,猜猜明天会说讲些什么吧