什么是JavaScript中的Promise
在JavaScript中,Promise一开始可能看起来很复杂,但实际上它非常简单,不需要太复杂的理解。在JavaScript中,Promise就像你在现实生活中做出的承诺一样,表示你在做某事上是有承诺的。
例如,我承诺在数学上取得好成绩,这个Promise有两个结果,要么兑现(或解决),要么不兑现(或被拒绝)。所以如果我取得好成绩,Promise就被解决了,但如果我没能取得好成绩,Promise就没有被解决,因为我没有兑现承诺。
然而,在JavaScript中,Promise有三种结果:Promise被解决、被拒绝或者处于挂起状态,挂起状态意味着Promise尚未完成,但可能在一段时间后完成,所以它现在还没有被拒绝,处于挂起状态。
让我们看另一个示例来了解JavaScript中 **Promise 的概念: **
假设我们通过使用Promise向服务器发出了一个请求来获取一些数据,如果我们成功地从服务器获取到这些数据,则Promise将被视为已成功解决(或已完成),但如果由于任何原因我们无法从服务器获取到这些数据,则意味着Promise被拒绝或未完成。
JavaScript中Promise的语法
Let p= new Promise((resolve,rejected)) =>{
Instructions
}
让我们来看看怎样在JavaScript中创建和使用Promise?
首先,我们必须使用构造函数来创建一个Promise:
constPromise =newPromise
Promise有两个参数,因为我们已经看过了Promise的语法:
constPromise =newPromise((resolve, reject)=>{
Condition
});
以下是最后一部分,即条件。如果条件满足,Promise将被解决;否则,Promise将被拒绝。
constPromise =newPromise((resolve, reject)=>{
let condition;
if(condition is met){
resolve('Promise is resolved successfully.');
}else{
reject('Promise is rejected');
}
});
所以这是我们的第一个 Promise。现在让我们使用它。
then() 方法
正如我们上面已经讨论的,对于一个 Promise,有两种主要情况:一种是 resolved(解决),另一种是 rejection(拒绝)。当 Promise 被解决时,接下来将会有些事情发生,取决于我们想要对已解决的 Promise 做什么。
myPromise.then();
这个”.then();”方法只有在Promise被解决(成功完成)时才被调用,而我们在其中传入的内容将被显示出来。例如,我们可以在其中传递一条消息给用户。
myPromise.then((message)=>{
console.log(message);
});
.catch(); 方法
当承诺被拒绝(或失败)时,将调用此方法。我们也可以在其中为用户传递一条消息。我们可以在”then ()”方法之后直接编写catch方法。
myPromise.then((message)=>{
console.log(message);
}).catch((message)=>{
console.log(message);
});
所以如果Promise被解决,我们将在屏幕上得到在“.then()”方法中传递的消息,但是如果Promise被拒绝,则我们将得到在“.catch()”方法中传递的消息。这意味着在这两种情况下,我们将在屏幕上得到不同的消息。
通过以下示例的帮助,我们可以更容易地理解Promise的工作原理:
程序
<!DOCTYPE html>
<html lang="en">
<head>
<body>
<script>
const myPromise = new Promise((resolve, reject) => {
let condition=9;
if(condition<0) {
resolve('Promise is resolved successfully and then() menthod will be called');
} else {
reject('Promise is rejected and catch() medhod will be called');
}
});
myPromise.then((message) => {
console.log(message);
}).catch((message) => {
console.log(message);
});
</script>
</body>
</html>
程序的解释
在上面的程序中,我们使用构造函数创建了一个promise,并传递了两个参数resolve和reject。在Promise定义中,我们还创建了一个变量”condition”并将其赋值为9。此外,使用(if)语句检查了变量的值。如果条件得到满足,”if”部分将被执行并解决promise(then()方法也将被调用),如果条件未满足,则执行else部分,promise被拒绝(then catch()也将被执行)。
输出
要在控制台看到输出,请按下”F12″键打开检查模式网页浏览器。
注意:如果你想执行Promise的else部分,可以修改程序代码,将条件改为true或false。