浅谈async,await,与promise的区别

本文讨论了JavaScript中处理异步请求的两种方式:Promise和ES6/ES8的async/await。async/await是Promise的语法糖,提供更简洁、可读的代码结构,通过try-catch处理结果,异步代码更接近同步。async函数在await处暂停执行,直到Promise决议,相比链式then/catch,维护性更高。
摘要由CSDN通过智能技术生成

是什么

都是处理异步请求的方式,promise是ES6提出的,async,await是ES8提出的,后者是前者的一个语法糖

相关性

async,await是基于promise实现的,二者都是非阻塞性的

区别

  1. async,await使得代码更简洁,更易读懂,promise是通过then,catch去捕获和处理成功和失败的结果,这种链式结构的写法容易造成代码重叠,不好维护,而async,await是通过try,catch去捕获和处理成功和失败的结果,更干净简洁,可读性高。
  2. async,await使得异步代码同步化, 前者,遇到await,就会等结果返回再执行下面的代码,如果promise返回reject,则整个async会中断,后面代码不执行。后者,promise中,.then方法返回,会出现请求还没有返回,就执行了后面的操作。
async/awaitPromise都是JavaScript中处理异步编程的方式,但是它们有一些不同之处。 Promise是一种异步编程的解决方案,它可以将异步操作封装成一个Promise对象,通过链式调用then()和catch()方法来处理异步操作的结果或错误。Promise对象有三种状态:pending(进行中)、fulfilled(已成功)和rejected(已失败)。 async/await是ES2017引入的异步编程解决方案,它可以让异步代码看起来像同步代码,使得代码更加易读易懂。async函数是返回一个Promise对象的函数,并且在函数内部可以使用await关键字来等待一个Promise对象的结果。当await关键字后面的Promise对象状态变为fulfilled时,await表达式的值就是Promise对象的resolve值,如果Promise对象状态变为rejected,则会抛出一个错误。 下面是一个使用Promiseasync/await实现异步操作的例子: 使用Promise实现异步操作: ```javascript function getData() { return new Promise((resolve, reject) => { setTimeout(() => { resolve('data'); }, 1000); }); } getData().then(data => { console.log(data); // 输出:data }).catch(error => { console.log(error); }); ``` 使用async/await实现异步操作: ```javascript async function getData() { return new Promise((resolve, reject) => { setTimeout(() => { resolve('data'); }, 1000); }); } async function main() { try { const data = await getData(); console.log(data); // 输出:data } catch (error) { console.log(error); } } main(); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值