JavaScript 中的 Promise 是什么?

2025年3月17日 | 阅读 3 分钟

JavaScript 中的 Promise 乍一看可能有点复杂,但实际上它很简单,并非高深莫测。在 JavaScript 中,Promise 就像我们在现实生活中做出的承诺一样,表明你致力于做某事。

例如,我承诺在数学课上取得好成绩,那么这个 Promise 就有两个结果:要么 fulfilled(或 resolved),要么 not fulfilled(或 rejected)。所以如果我取得了优异的成绩,Promise 就 resolved 了,但如果我未能取得好成绩,它就不会 resolved,因为我未能信守承诺。

然而,在 JavaScript 中,Promise 有三个结果:Promise 获得 resolved,获得 rejected,或者处于 pending 状态,这意味着 Promise 尚未完成,但可能稍后会完成,所以它尚未被 rejected,处于 pending 状态。

What is a promise in JavaScript?

让我们用另一个例子来理解 JavaScript 中 Promise 的概念

假设我们使用 Promise 发出请求从服务器获取数据。如果我们成功地从服务器获取了数据,那么 Promise 将被视为成功 resolved(或 completed);但如果我们由于任何原因未能从服务器获取数据,则意味着 Promise 被 rejected 或未 completed。

JavaScript 中 Promise 的语法

让我们看看 如何在 JavaScript 中创建和使用 Promise?

首先,我们必须使用构造函数创建一个 Promise。

如前所述,Promise 有两个参数,我们已经看过 Promise 的语法。

这是最后一个部分,即条件。如果满足条件,Promise 将 resolved;否则,Promise 将 rejected。

所以,这是我们的第一个 Promise。现在让我们使用它。

then() 方法

正如我们上面讨论过的,对于 Promise,有两种主要情况:一种是 resolved,另一种是 rejection。当 Promise 获得 resolved 时,接下来会发生什么取决于我们想如何处理 resolved 的 Promise。

这个 ".then();" 方法仅在 Promise 获得 resolved(成功 completed)时调用,并且其中传递的内容将被显示。例如,我们可以为此传递一条消息给用户。

.catch(); 方法

当 Promise 被 rejected(或失败)时,会调用此方法。我们也可以为此传递一条消息给用户。我们可以在 "then ()" 方法之后编写 catch 方法。

所以,如果 Promise 获得 resolved,那么我们将在屏幕上看到传递到 ".then()" 方法中的消息;但如果 Promise 被 rejected,那么我们将看到传递到 ".catch()" 方法中的消息。这意味着在两种情况下,我们都会在屏幕上看到不同的消息。

我们可以通过下面的例子更容易地理解 Promise 的工作原理

程序

程序解释

在上面的程序中,我们使用构造函数创建了一个 Promise,并传递了两个参数 resolve 和 reject。在 Promise 定义内部,我们还创建了一个变量 "condition" 并为其赋值 9。此外,使用 (if) 语句,我们检查了变量的值。如果满足条件,将执行 "if" 部分,Promise 将 resolved(then() 方法也将被调用);如果条件不满足,将执行 else 部分,Promise 将 rejected(then catch() 将被执行)。

输出

要查看控制台中的输出,请按 "f12" 键在 网页浏览器 中打开检查模式。

What is a promise in JavaScript?

注意:如果你想执行 Promise 的 else 部分,可以通过将条件更改为 true 或 false 来修改程序代码。