📜  ES6 中的 Promise 状态是什么?

📅  最后修改于: 2022-05-13 01:56:43.217000             🧑  作者: Mango

ES6 中的 Promise 状态是什么?

在本文中,我们将讨论与承诺相关的基本细节以及 ES6 中的各种承诺状态。

让我们首先了解一些与 Promise 相关的基本细节。

承诺:

  • Promise 是一个对象,用于处理所有异步操作(这些操作显然是在来自某些资源的异步数据上执行的)。
  • 它在某种程度上与现实生活中的承诺相互关联。它实际上是一个基于未来的场景,虽然在未来本身执行。
  • 承诺可能有两种结果:在未来,它可能会实现,也可能不会。
  • 这就是我们的 Promise 的执行方式,每当我们定义一个 Promise 时,它要么随着时间的推移而得到解决,要么被拒绝。
  • 我们可以使用以下语法声明一个 Promise。

句法:

以下语法可用于声明承诺:

// This is how we could initialize
// or set up our promise object
let promise_object = new Promise();

承诺状态:

  • 如上图所示,promise 有三种状态:Resolved、Reject、Pending。
  • Pending 状态是 Promise 没有成功或失败的初始状态。
  • Resolve 状态是 promise 成功执行的另一种状态。
  • 拒绝状态是承诺无法执行的最后阶段。
  • 为了表示 Promise 的状态,我们可以遵循特定的语法。

句法:

以下语法可用于设置 Promise 的状态:

// At a time either a promise gets resolved
// or reject but not both.
let promise_object = new Promise(resolve, reject);

现在,我们已经了解了与 Promise 相关的基本细节,然后是 Promise 状态,现在是时候提供一些示例,这将有助于我们以更好的方式理解所有事物。

示例 1:

  • 在这个例子中,我们将按照我们之前看到的语法创建一个 Promise。
  • 除了声明 Promise 之外,我们首先将使用 resolve() 状态来显示 Promise 如何成功地在 resolve 方法中传递数据。
  • 之后,使用 .then() 方法,我们将在控制台上打印出我们的数据。
Javascript
let promise = new Promise((resolve, reject) => {
  resolve("Hello World.... This is a Promise");
})
  
  // After promise getting successfully
  // executed, data gets printed
  .then((data) => console.log(data))
    
  // If any error comes in between then
  // it gets printed with the help of
  // catch block
  .catch((error) => console.log(error));


Javascript
let promise = new Promise((resolve, reject) => {
  reject("Oops..!!! An Error Occured");
})
  
  // Here .then() method has no significance
  // since it is being resolved by catch block
  .then((data) => console.log(data))
  
  // Error message will be displayed by
  // this catch() block
  .catch((error) => console.log(error));


输出:

Hello World.... This is a Promise

示例 2:

  • 同样在这个例子中,我们将按照我们之前看到的语法创建一个 Promise。
  • 除了声明 Promise 之外,我们还将使用 reject() 方法来展示如何在任何特定内容执行失败的情况下使用 Promise。
  • 之后,我们将使用 .catch() 方法在控制台上显示任何错误消息。

Javascript

let promise = new Promise((resolve, reject) => {
  reject("Oops..!!! An Error Occured");
})
  
  // Here .then() method has no significance
  // since it is being resolved by catch block
  .then((data) => console.log(data))
  
  // Error message will be displayed by
  // this catch() block
  .catch((error) => console.log(error));

输出:

Oops..!!! An Error Occured