async-await的原理和使用

本文深入探讨了async函数的本质,指出它实际上返回一个Promise对象。当在async函数中使用await时,即使处理的是异步操作,整个流程也会变得类似同步,等待异步任务完成后才继续执行后续的同步代码。通过这种方式,async/await提供了一种更简洁、易于理解和调试的异步编程方式。
摘要由CSDN通过智能技术生成
总结:其实前面加了async的函数,当我在这个函数调用的时候进行打印发现它输出的是一个promise对象,其实这个函数的本质就是返回了一个promise对象,在这个函数里里我们加上await后,即使调用的是异步代码,它也会变成类似于同步,只有让这个异步代码执行完后,才会执行下面的同步代码来执行,这就是它的本质。
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewp
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
async/await是C#中用于编写异步代码的关键字。它基于任务(Task)和异步操作模式(Async Operation Pattern)来实现异步编程。当方法被标记为async时,这个方法可以包含await关键字,用于等待一个异步操作完成。在等待异步操作期间,方法会立即返回,不会阻塞线程。当异步操作完成后,方法会继续执行剩下的代码。 在编译时,编译器会将带有await关键字的代码转换为状态机(State Machine)的形式,以便正确处理异步操作的状态和结果。这样就实现了代码的简洁、易懂、易维护。 具体实现上,编译器会生成一个状态机类来管理异步操作的状态。每当遇到await关键字时,编译器会将await后面的表达式封装为一个任务(Task),并将控制权返回给调用者。当异步操作完成后,状态机会通过回调或轮询等方式,重新获取控制权并继续执行剩下的代码。 总结起来,async/await通过编译器实现的语法糖,使得编写异步代码变得更加简单和直观,同时保持了代码的可读性和可维护性。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Async和Await异步编程的原理](https://blog.csdn.net/sD7O95O/article/details/116382292)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [C# Async/Await原理剖析](https://blog.csdn.net/weixin_43990579/article/details/105417652)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值