Promise 是一种异步编程的解决方案,可以避免回调地狱。它代表了一个异步操作的最终完成或失败,并且可以获取异步操作的结果。
Promise 有三种状态:等待(pending)、已完成(fulfilled)、已拒绝(rejected)。当异步操作完成后,可以通过调用 resolve 函数将 Promise 状态从等待改为已完成,或者通过调用 reject 函数将 Promise 状态从等待改为已拒绝。
以下是一个简单的 Promise 示例:
function asyncFunc() {
return new Promise((resolve, reject) => {
setTimeout(() => {
const random = Math.random();
if (random > 0.5) {
resolve(random);
} else {
reject(new Error("Random number is too small"));
}
}, 1000);
});
}
asyncFunc()
.then(result => console.log(`Result: ${result}`))
.catch(error => console.error(`Error: ${error.message}`));
在这个示例中,asyncFunc 函数返回一个 Promise 对象。在 Promise 的构造函数中,我们使用 setTimeout 模拟一个异步操作,并且在异步操作完成后调用 resolve 或 reject 函数。然后我们调用 asyncFunc 函数,并使用 then 和 catch 方法分别处理 Promise 的成功和失败状态。如果 Promise 被成功解决,then 方法将被调用,并且我们将获得异步操作的结果;如果 Promise 被拒绝,则 catch 方法将被调用,并且我们将获得一个错误对象。