首页 > 其他分享 >async/await

async/await

时间:2023-08-22 09:22:05浏览次数:32  
标签:异步 同步 代码 await Promise async

async/await是同步语法,能以不使用回调函数的方式来实现异步。await被async包裹,await后面可以追加Promise对象,也可以追加async函数。

执行async函数,返回的是一个Promise对象。如果直接返回一个值,那么会把这个值封装成一个Promise对象。

await相当于Promise的then。

 

优点:

1.方便级联调用:即调用依次发生的场景;
2.同步代码编写方式: Promise使用then函数进行链式调用,一直点点点,是一种从左向右的横向写法;async/await从上到下,顺序执行,就像写同步代码一样,更符合代码编写习惯;
3.多个参数传递: Promise的then函数只能传递一个参数,虽然可以通过包装成对象来传递多个参数,但是会导致传递冗余信息,频繁的解析又重新组合参数,比较麻烦;async/await没有这个限制,可以当做普  通的局部变量来处理,用let或者const定义的块级变量想怎么用就怎么用,想定义几个就定义几个,完全没有限制,也没有冗余工作;
4.同步代码和异步代码可以一起编写: 使用Promise的时候最好将同步代码和异步代码放在不同的then节点中,这样结构更加清晰;async/await整个书写习惯都是同步的,不需要纠结同步和异步的区别,当然,异步过程需要包装成一个Promise对象放在await关键字后面;

标签:异步,同步,代码,await,Promise,async
From: https://www.cnblogs.com/qiuchuanji/p/17647618.html

相关文章

  • await this.$nextTick()和this.$nextTick(callback)有什么区别?记一次bug调试
    背景需要实现一个需求,一个小区业务详情页面,在左侧菜单栏切换了小区后,详情页跟着切换。这个详情页面是根据url上的/:id来确定小区id的,所以切换了小区后,应该切换路由。于是这样实现:watch:{//监听小区号变化neighNo(newVal){if(newVal){//切换路......
  • 关于async 和await关键字
    首先async关键字是标记当前方法为异步方法await关键字是为了等待异步方法结果。类似于getResult等待结果。在返回异步方法执行结果之前主线程会被阻塞。两张图解释  直接await甚至不会开启新线程。 ......
  • async_await 源码分析
    async/await源码解析这篇文章主要是分析async/await这个语法糖,分析一下async和await是如何做到异步的。首先,我先抛出两个问题,各位可以先想一下。await之后的方法是何时执行,如何执行的?为什么await之后的代码会在不同的线程执行?demo要想知道async/await是怎么运......
  • vite打包报错:ERROR: Top-level await is not available in the configured target env
    在开发时,vita打包报错如下: 原因:ECMAScript提案Top-levelawait由MylesBorins提出,它可以让你在模块的最高层中使用await操作符。在这之前,你只能通过在async函数或asyncgenerators中使用await操作符。Top-levelawait是个新特性,打包不支持此特性。解决方案:1.......
  • ( async/await)与(try、catch)
    避免再请求中使用then回调,将请求后的代码变成同步的,可使用async搭配awaitasync:是一个异步的方法;return返回值实际是Promise对象,不会阻塞后面的函数await:同步运算符(then的语法糖),可阻塞async函数内的await下的其他逻辑,直到执行完成后,返回请求结果(如果有的话);并不会阻塞异步方法的线......
  • SocketAsyncEventArgs内存占用太大引发OutOfMemoryExceptions
    最近把一个接收socket服务端软件升级为iocp方案,其实就是换成c#的socket的异步方法,主要参考的是微软写的Server类,然后再百度找到基于这个类实现的代码来改造上线一两天后,软件崩溃了,查日志发现报了很多OutOfMemoryExceptions错误,都是在发送方法上。因为我发送方法用的SocketAsyncE......
  • .Net AsyncLocal介绍
    AsyncLocal的基本概念AsyncLocal是一个在异步环境中存储和传递状态的类型。它允许你在线程或任务之间共享数据,而不会受到异步上下文切换的影响。每一个异步的AsyncLocal的数据都是独立的AsyncLocal主要是用来在同一个异步控制流内共享对象的,如:一个web请求经过多个async/await......
  • C#实现异步阻塞TCP(SocketAsyncEventArgs,SendAsync,ReceiveAsync,AcceptAsync,ConnectAsyn
    //Thisclasscreatesasinglelargebufferwhichcanbedividedup //andassignedtoSocketAsyncEventArgsobjectsforusewitheach //socketI/Ooperation. //Thisenablesbuffferstobeeasilyreusedandguardsagainst //fragmentingheapmemory.......
  • CompletableFuture supplyAsync()
    CompletableFuture中的方法publicstaticCompletableFuture<Void>runAsync(Runnablerunnable)publicstaticCompletableFuture<Void>runAsync(Runnablerunnable,Executorexecutor)publicstatic<U>CompletableFuture<U>supplyAsync(Supplie......
  • std::async的使用总结
    https://blog.csdn.net/weixin_41191739/article/details/113115847  vecotr<...>  async 其中的一种用法:#include<iostream>#include<vector>#include<string>#include<future>#include<algorithm>usingnamespacestd;s......