promise与async/await的区别

Promiseasync/await 是 JavaScript 中用于处理异步操作的两种不同的语法结构,它们有以下主要区别:

Promise:

  1. Promise 是异步编程的一种解决方案,早于 async/await 出现。在 Promise 出现之前,异步操作主要依靠回调函数(callback)来实现。
  2. Promise 对象有三种状态:pending(进行中)、fulfilled(已成功)和 rejected(已失败)。
  3. then 方法用来处理 Promise 成功返回的结果,而 catch 方法用来处理 Promise 出错或被拒绝的情况。
  4. Promise 可以链式调用,这一点可以让我们通过 .then() 连接多个异步操作,但在某些情况下可能会导致 “回调地狱”(Callback Hell)的问题。
doSomething()
  .then(result => doSomethingElse(result))
  .then(newResult => doThirdThing(newResult))
  .catch(error => console.error(error));

async/await:

  1. async/await 是基于Promises的更高层次的抽象,于 ES2017 (ECMAScript 8) 引入,使得异步操作的写法更加接近同步操作。
  2. 使用 async 关键字声明一个函数是异步的,await 关键字暂停异步函数的执行,等待 Promise 的响应。
  3. await 会等待其后的 Promise 解决,并返回解决的值。如果 Promise 被拒绝,则会抛出异常,可以用 try...catch 来捕捉。
  4. async/await 使得代码更加直观,并且可以减少链式 Promise 调用可能产生的复杂性。
async function asyncFunction() {
  try {
    const result = await doSomething();
    const newResult = await doSomethingElse(result);
    const finalResult = await doThirdThing(newResult);
    console.log(finalResult);
  } catch (error) {
    console.error(error);
  }
}

总的来说,async/await 在写法上更加简洁,让异步流程更易理解和维护。而 Promise 仍然是 async/await 背后的核心概念,并且在某些案例中,只使用 Promise 也是适宜的。

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值