库拉索芦荟 - 芦荟汇聚地!

async

> 知识库 芦荟君 2024-11-16 19:46

学会使用async/await

有很多 async 的面试题,例如 等等,需要找出一个规律 用同步的方式,编写异步。 和 Promise 的关系 async 函数返回结果都是 Promise 对象(如果函数内没返回 Promise ,则自动封装一下) await 后面跟 Promise 对象:会阻断后续代码,等待状态变为 resolved ,才获取结果并继续执行 await 后续跟非 Promise 对象:会直接返回 总结来看: 异步本质 await 是同步写法, 但本质还是异步调用 。 即,只要遇到了 await ,后面的代码都相当于放在 callback 里。 for...of 定时算乘法 执行 async 函数执行返回的是 Promise 对象 await 相当于 Promise 的 then try...catch 可捕获异常,代替 Promise 的 catch 右上图解读: async返回Promise,await返回then,await后面报错会终止执行,可以用try...catch来捕获

async/await的使用

其实你要实现一个东西之前,最好是先搞清楚这两样东西 async/await 的用处就是: 用同步方式,执行异步操作 ,怎么说呢?举个例子 比如我现在有一个需求:先请求完 接口1 ,再去请求 接口2 ,我们通常会这么做 或者我现在又有一个需求:先请求完 接口1 ,再拿 接口1 返回的数据,去当做 接口2 的请求参数,那我们也可以这么做 其实这么做是没问题的,但是如果嵌套的多了,不免有点不雅观,这个时候就可以用 async/await 来解决了 还是用刚刚的例子 需求一: 需求二: 其实就类似于生活中的 排队 ,咱们生活中排队买东西,肯定是要上一个人买完,才轮到下一个人。而上面也一样,在 async 函数中, await 规定了异步操作只能一个一个排队执行,从而达到 用同步方式,执行异步操作 的效果,这里注意了: await只能在async函数中使用,不然会报错哦 刚刚上面的例子 await 后面都是跟着异步操作 Promise ,那如果不接 Promise 会怎么样呢? 可以看出,如果 await 后面接的不是 Promise 的话,其实是达不到 排队 的效果的 说完 await ,咱们聊聊 async 吧, async 是一个位于function之前的前缀,只有 async函数 中,才能使用 await 。那 async 执行完是返回一个什么东西呢? 可以看出, async函数 执行完会自动返回一个状态为 fulfilled 的Promise,也就是成功状态,但是值却是undefined,那要怎么才能使值不是undefined呢?很简单,函数有 return 返回值就行了 可以看出,此时就有值了,并且还能使用 then方法 进行输出 总结一下 async/await 的知识点

查看全部
热门文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
大家都在看