返回

工作后才明白:狠抓promise和异步函数,前途不是梦

前端

前言

异步和同步之间的概念就不多述了,在网上这种文章比比皆是,也不是本篇要讲的重点。

1. Promise(期约)

1.1 ES6新增promise引用类型,可以通过new操作符来实例化,并且创建新pr

const promise = new Promise((resolve, reject) => {
  // 异步操作
});
  • resolve():当异步操作成功时调用,将结果传递给.then()方法。
  • reject():当异步操作失败时调用,将错误信息传递给.catch()方法。

1.2 Promise状态

Promise有三种状态:

  • Pending(等待) :初始状态,此时异步操作尚未完成。
  • Fulfilled(已完成) :异步操作成功,调用resolve()方法后进入此状态。
  • Rejected(已拒绝) :异步操作失败,调用reject()方法后进入此状态。

1.3 Promise方法

  • .then():当promise状态变为fulfilled时,执行此方法。
  • .catch():当promise状态变为rejected时,执行此方法。
  • .finally():无论promise状态如何,都会执行此方法。

1.4 Promise链式调用

Promise支持链式调用,即在一个.then()方法中再返回一个promise,这样可以将多个异步操作串联起来。

promise.then(result => {
  return anotherPromise(result);
}).then(result => {
  // 再次处理结果
});

2. 异步函数

2.1 ES2017引入的异步函数,使用async声明

async function myAsyncFunction() {
  // 异步操作
}

2.2 异步函数的特性

  • 使用await关键字可以等待异步操作完成。
  • 异步函数内部可以使用try...catch来捕获错误。

2.3 使用场景

异步函数常用于处理异步操作,如网络请求、文件读写等。

3. Promise和异步函数对比

  • Promise是一个对象,异步函数是一个函数。
  • Promise的状态可以是pendingfulfilledrejected,异步函数只有resolvedrejected两种状态。
  • Promise支持链式调用,异步函数也支持,但异步函数的链式调用更简洁。

4. 工作中如何使用

在工作中,Promise和异步函数经常会用到。以下是一些常见的场景:

  • 网络请求:可以使用Promise或异步函数来发送网络请求,并处理响应结果。
  • 文件读写:可以使用Promise或异步函数来读写文件。
  • 定时器:可以使用Promise或异步函数来设置定时器。
  • 事件监听器:可以使用Promise或异步函数来监听事件。

5. 结语

Promise和异步函数是JavaScript中处理异步操作的利器,熟练掌握这两者,可以大大提高开发效率。在工作中,Promise和异步函数经常会用到,掌握这两者可以帮助你成为一名合格的JavaScript工程师。