Promise 是 JavaScript 中用于处理异步操作的一种机制,Promise 的原理涉及到状态管理、回调函数的注册和执行,以及链式调用。
Promise对象有三种状态:pending、fulfilled和rejected。Promise的状态只能从pending变为fulfilled或rejected,一旦状态改变,就不会再变。Promise的构造函数接受一个执行器函数,执行器函数中可以调用resolve或reject来改变Promise的状态。Promise对象有一个then方法,它接受两个参数:onFulfilled和onRejected,分别是Promise状态变为fulfilled和rejected时的回调函数。then方法返回一个新的Promise对象,这使得Promise可以链式调用。Promise对象还有一个catch方法,用于捕获Promise链中的错误。
// 创建一个 Promise 对象
const myPromise = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('操作成功'); // 模拟异步操作成功
}, 1000);
});
// 使用 .then 方法注册回调函数,并返回一个新的值
myPromise.then(result => {
console.log(result); // 输出: 操作成功
return '新的结果'; // 返回一个新的值
}).then(newResult => {
console.log(newResult); // 输出: 新的结果
}).catch(error => {
console.error(error); // 输出: Error: 发生错误
});;