📜  是承诺 - Javascript (1)

📅  最后修改于: 2023-12-03 14:55:11.267000             🧑  作者: Mango

是承诺 - JavaScript

JavaScript 是一种能够使网页动起来的编程语言。除了 DOM 操作,它还有一种非常重要的功能 — 异步编程。在很多情况下,我们需要处理网络请求、用户事件等异步事件。而 JavaScript 的异步特性让开发者可以处理这些事件而不会阻塞其他操作。

但是,异步编程也带来了一些问题。我们需要处理回调函数的嵌套,代码难以维护和扩展。而 Promise 的出现为我们提供了一种更优雅的方式来处理异步编程。

Promise

Promise 是 JavaScript 异步编程的一种解决方案。Promise 可以认为是一个容器,里面保存了未来才会结束的事件(如异步操作)的结果。

Promise 有三种状态:pending(进行中)、fulfilled(已成功)和 rejected(已失败)。Promise 可以从进行中的状态转变为已成功或已失败的状态。一旦 Promise 的状态被确定,就不会再改变。

构造 Promise 对象

Promise 对象需要接受一个函数作为参数,该函数接受两个函数(resolve 和 reject)作为参数,分别代表异步操作成功后的回调和异步操作失败后的回调。

const promise = new Promise((resolve, reject) => {
  // 异步操作成功后调用 resolve() 方法
  // 异步操作失败后调用 reject() 方法
});
处理 Promise 对象
  • then() 方法:Promise 对象的 then 方法用来注册当 Promise 对象状态变成已成功(fulfilled)时的回调函数和当状态变成已失败(rejected)时的回调函数。
promise.then(onFulfilled, onRejected)
  • catch() 方法:Promise 对象的 catch 方法用来注册当 Promise 对象状态变成已失败(rejected)时的回调函数。
promise.catch(onRejected)
  • finally() 方法:Promise 对象的 finally 方法用来注册当 Promise 对象状态变更时的回调函数。
promise.finally(onFinally)
async/await

async/await 是一种在异步编程上建立在 Promise 之上的新特性。async 函数是一个返回 Promise 对象的函数。通过使用 async/await,我们可以用同步的方式编写异步代码。

async/await 的使用需要遵循下面两个原则:

  • 任何一个 async 函数都会返回一个 Promise 对象。
  • async 函数内部可以使用 await 关键字来等待一个 Promise 对象的执行结果。
async function asyncFunc() {
  const result = await promise;
  // ...
  return result;
}
小结

JavaScript 作为现在最为流行的编程语言之一,在异步编程方面有着得天独厚的优势。通过 Promise 和 async/await 这两种特性,开发者可以更加优雅和高效地处理异步编程,在提高代码可维护性和扩展性的同时,为用户带来更为流畅的体验。