Promise的构造函数
Promise 是 JavaScript 中用于处理异步操作的对象。它的构造函数用于创建一个新的 Promise 实例,并接受一个执行器函数(executor function)作为参数。以下是 Promise 构造函数的详细解析和使用方法。
1. Promise 构造函数的基本语法
new Promise(executor);
executor:一个函数,接受两个参数resolve和reject,分别用于将Promise的状态从 pending(等待) 转换为 fulfilled(已成功) 或 rejected(已失败)。
2. 参数说明
(1) resolve 函数
- 作用:将
Promise的状态从 pending 转换为 fulfilled,并传递结果值。
resolve(value);
value:传递给then方法的成功回调的值。
(2) reject 函数
-
作用:将
Promise的状态从 pending 转换为 rejected,并传递错误原因。 -
语法:
reject(reason);
reason:传递给catch方法或then的失败回调的错误原因。
3. 使用示例
(1) 基本用法
const promise = new Promise((resolve, reject) => {
setTimeout(() => {
const success = true;
if (success) {
resolve('Operation succeeded!');
} else {
reject('Operation failed!');
}
}, 1000);
});
promise
.then((result) => {
console.log(result); // 输出: "Operation succeeded!"
})
.catch((error) => {
console.error(error); // 输出: "Operation failed!"
});
(2) 链式调用
new Promise((resolve, reject) => {
setTimeout(() => resolve(1), 1000);
})
.then((result) => {
console.log(result); // 输出: 1
return result * 2;
})
.then((result) => {
console.log(result); // 输出: 2
return result * 2;
})
.then((result) => {
console.log(result); // 输出: 4
})
.catch((error) => {
console.error(error);
});
(3) 错误处理
new Promise((resolve, reject) => {
setTimeout(() => reject(new Error('Something went wrong!')), 1000);
})
.then((result) => {
console.log(result);
})
.catch((error) => {
console.error(error.message); // 输出: "Something went wrong!"
});
4. Promise 的状态
-
pending(等待):初始状态,既不是成功也不是失败。
-
fulfilled(已成功):操作成功完成,调用
resolve。 -
rejected(已失败):操作失败,调用
reject。
5. 注意事项
-
立即执行:
executor函数在Promise构造函数调用时立即执行。 -
不可逆:
Promise的状态一旦从pending转换为fulfilled或rejected,就不能再改变。 -
错误处理:未捕获的
reject会导致未处理的Promise错误,建议始终使用.catch或try/catch(在async/await中)。
总结
-
Promise构造函数:用于创建Promise实例,接受一个executor函数。 -
resolve和reject:用于改变Promise的状态并传递结果或错误。 -
链式调用:通过
.then和.catch处理成功和失败的结果。
Promise 是处理异步操作的核心工具,结合 async/await 可以编写更简洁、易读的异步代码。
更多vue相关插件及后台管理模板可访问vue admin reference,代码详情请访问github