首页 > 其他分享 >async,await

async,await

时间:2023-02-07 19:23:17浏览次数:48  
标签:异步 函数 代码 await Promise async

注意点:

① async/await是ES7新特性

② async/await是写异步代码的新方式,以前的方法有回调函数和Promise
③ async/await是基于Promise实现的,它不能用于普通的回调函数
④ async/await与Promise一样,是非阻塞的
⑤ async/await使得异步代码看起来像同步代码,这正是它的魔力所在

async

(1)async 表示函数里有异步操作, await 表示紧跟在后面的表达式需要等待结果。

(2)async 函数返回一个 Promise对象,可以使用 then方法添加回调函数。当函数执行的时候,一旦遇到 await 就会先返回,等到异步操作完成,再接着执行函数体内后面的语句。

await

(1)如果表达式是 promise 对象, await 返回的是 promise 成功的值

(2)如果表达式是其它值, 直接将此值作为 await 的返回值

(3)await 必须写在 async 函数中, 但 async 函数中可以没有 await,如果 await 的 Promise 失败了, 就会抛出异常, 需要通过 try...catch 捕获处理。

和promise的区别:

1)简洁的代码
使用async函数可以让代码简洁很多,不需要像Promise一样需要些then,不需要写匿名函数处理Promise的resolve值,也不需要定义多余的data变量,还避免了嵌套代码。
2) 错误处理:

Promise 中不能自定义使用 try/catch 进行错误捕获,但是在 Async/await 中可以像处理同步代码处理错误。

3)条件语句

条件语句也和错误捕获是一样的,在 Async 中也可以像平时一般使用条件语句。

4)中间值

在一些场景中,也许需要 promise1 去触发 promise2 再去触发 promise3,这个时候代码可能嵌套比较多,而使用async/await就变得很简单。

5)调试

async/await能够使得代码调试更简单。2个理由使得调试Promise变得非常痛苦:

  • 《1》不能在返回表达式的箭头函数中设置断点

  • 《2》如果你在.then代码块中设置断点,使用Step Over快捷键,调试器不会跳到下一个.then,因为它只会跳过异步代码。

使用await/async时,你不再需要那么多箭头函数,这样你就可以像调试同步代码一样跳过await语句

参考链接:https://www.jianshu.com/p/0431e209dc0f

标签:异步,函数,代码,await,Promise,async
From: https://www.cnblogs.com/131362wsc/p/17099544.html

相关文章

  • NoClassDefFoundError: Could not initialize class MinioAsyncClient
    场景之前springboot集成的minio突然报错了,导致图片和附件查看和上传都出现问题。经过查看服务日志,提示错误如下java.lang.NoClassDefFoundError:Couldnotinitiali......
  • Android AsyncTask实现异步任务的执行
    Android的AsyncTask比Handler更轻量级一些,适用于简单的异步处理。首先明确Android之所以有Handler和AsyncTask,都是为了不阻塞主线程(UI线程),且UI的更新......
  • 异步编程(协程asyncio)
    协程1.异步非阻塞,asyncio2.异步框架:提升性能tomadofastapidjango3.xasgiaiohttp协程是什么协程是不是计算机提供出来的,程序员自己创建的。​协程(corout......
  • Spring异步Async和事务Transactional注解
    Spring开发中我们我们常常用到@Transaction和@Async,但这2个注解加在一起很多的开发者不敢用,担心事务不生效。下面我们就仔细讲解一下这2个注解同时运用,文章用3个场景讲述它......
  • async和await-cnblog
    在之前对promise对象的处理使用Promise原型函数then,catch解决回调地狱的问题,但存在冗余代码.then().then().then()asyncawaites8(esma2017)引入awaitPromis......
  • 通过一个示例形象地理解C# async await 非并行异步、并行异步、并行异步的并发量控制
    前言接上一篇通过一个示例形象地理解C#asyncawait异步我在.NET与大数据中吐槽前同事在双层循环体中(肯定是单线程了)频繁请求es,导致接口的总耗时很长。这不能怪前同......
  • async-awiat-优雅处理错误
    (async()=>{constfetchData=()=>{returnnewPromise((resolve,reject)=>{setTimeout(()=>{resolve('fetchda......
  • 报错:Unexpected reserved word 'await'?
    async和await是成对出现的。会报上边的错是因为没有把async放在和await最近的函数上。举例:报错代码:1asyncconfirmAll(){2this.$refs['editeForm'].valida......
  • 在 JavaScript 中编写Go式错误处理的async/await
    ES7引入​​async/await​​​允许开发人员编写看起来像同步的异步JavaScript代码。在当前的JavaScript版本中,还可以使用​​Promises​​,这些功能都是为了简化异步......
  • 使用@Async实现异步调用
    什么是“异步调用”?“异步调用”对应的是“同步调用”,同步调用指程序按照定义顺序依次执行,每一行程序都必须等待上一行程序执行完成之后才能执行;异步调用指程序在顺序执行......