一、Promise对象简介
Promise是一个在ES6语法中引进的专门用于处理异步操作的对。
Promise代表的含义是异步操作的结果,即一个在现在、未来或永远不可用的值,通过Promise可以判断异步操作的顺利完成或失败。
在异步编程场景中,一般将Promise对象作为函数的返回结果,我们可以将Promise对象与回调函数进行绑定,将回调函数传给Promise对象。比起在指定的函数中调用回调函数,Promise对象提供了更加灵活的异步编程方法。
Promise对象在代码运行期间主要呈现三种状态:
Pending:任务处于初始状态。
Fulfilled:任务执行成功,结果可用。
Rejected:任务执行失败,并显示错误原因。
Promise对象的大致语法如下:
let promise_obj = new Promise((resolve, reject) => {
// 执行异步操作
if (isSuccessful) {
resolve("operation successful");
// 切换到fulfilled状态
} else {
reject("operation failed");
// 切换到rejected状态
}
});
代码样例:判断一个数是否为偶数
let checkEven = new Promise((resolve, reject) => {
let number = 6;
if (number % 2 === 0) {
resolve("The number is even!");
}
else {
reject("The number is odd!");
}
});
checkEven
.then((message) => console.log(message)) // On success
.catch((error) => console.error(error)); // On failure
运行结果:
The number is even!
二、创建Promise对象的方法
创建Promise对象时,需要将executor函数传递给Promise构造函数,该构造函数包含异步操作,并定义了异步操作执行成功和执行失败时对应的动作。
resolve和reject是构造Promise对象时默认要传入的两个参数。
Promise构造函数的语法:
let promise = new Promise(executor_function(resolve, reject) {
// async operation code
});
Promise构造函数的匿名函数写法:
let promise = new Promise((resolve, reject) => {
// async operation code
});
三、Promise对象的状态切换
Promise对象的状态切换遵循严格的生命周期规则,pending是初始状态,表示异步操作尚未完成。当异步操作执行成功时,状态变为fulfilled,此时会调用resolve函数,并且Promise.then()方法中的成功回调会被触发。当异步操作执行失败时,状态变为rejected,此时会调用reject函数,Promise.then()或Promise.catch()中的错误处理回调会被触发。
1.初始状态
构造Promise对象时的状态,此时状态为pending