了解 Promise 内部运作需要理解 Promise 的数据结构。它类似于一个带有状态的容器对象,用于保存异步操作的结果。当异步操作完成时,Promise 基于其状态将结果或错误传递给回调函数。
以下代码示例演示了 Promise 的数据结构和工作原理:
// create a new Promise object
const myPromise = new Promise((resolve, reject) => {
setTimeout(() => {
const randomNumber = Math.random();
if (randomNumber < 0.5) {
resolve(randomNumber);
} else {
reject(new Error('Random number greater than 0.5'));
}
}, 2000);
});
// consume the Promise object
myPromise
.then(result => console.log(`Result: ${result}`))
.catch(error => console.error(`Error: ${error.message}`));
在上面的代码示例中,myPromise 是一个 Promise 对象。它包含一个执行异步操作的函数,该函数接受两个回调函数:resolve 和 reject。当异步操作成功完成时,调用 resolve 回调函数,并将结果作为参数传递给它;否则,调用 reject 回调函数,并传递包含错误消息的 Error 对象。
我们可以通过 chainning then/catch 来获取 Promise 的结果或错误信息。
需要注意的是,Promise 一旦达到 resolve 或 reject 状态就不能再次更改。