Promise 是 JavaScript 中用于处理异步操作的一种机制,它可以让我们更加方便地处理异步任务,避免了回调地狱的问题。Promise 有三种状态:Pending(等待中)、Fulfilled(已完成)和Rejected(已拒绝)。在本文中,我们将会详细讲解 Promise 中的 Pending 状态转换方法,希望能够帮助读者更好地理解 Promise 的使用。
1. Pending 状态
在 Promise 中,初始状态为 Pending 状态,即等待状态。此时 Promise 实例既没有被 Fulfilled 也没有被 Rejected。当 Promise 状态变为 Fulfilled 或 Rejected 时,就无法再次回到 Pending 状态。
// javascriptcn.com 代码示例 const promise = new Promise((resolve, reject) => { // 异步操作... if (/* 异步操作成功 */) { resolve('成功'); } else { reject('失败'); } }); console.log(promise); // Promise { <pending> }
在上面的代码中,我们创建了一个 Promise 实例,并传入了一个异步操作。在异步操作执行完成之前,Promise 状态一直为 Pending。
2. Pending 状态转换方法
Promise 中有两种方法可以将 Pending 状态转换为其他状态:resolve 和 reject。
2.1 resolve
resolve 方法用于将 Promise 状态从 Pending 转换为 Fulfilled,表示异步操作成功完成。resolve 方法接收一个参数,即异步操作的结果。在 resolve 方法被调用时,Promise 实例的 then 方法会被调用,then 方法的回调函数接收 resolve 方法传递的参数。
// javascriptcn.com 代码示例 const promise = new Promise((resolve, reject) => { // 异步操作... if (/* 异步操作成功 */) { resolve('成功'); } else { reject('失败'); } }); promise.then(result => { console.log(result); // 成功 });
在上面的代码中,当异步操作成功时,我们调用了 resolve 方法,并将异步操作的结果传递给了 resolve 方法。此时 Promise 状态从 Pending 转换为 Fulfilled,then 方法的回调函数被调用,并接收了 resolve 方法传递的参数。
2.2 reject
reject 方法用于将 Promise 状态从 Pending 转换为 Rejected,表示异步操作失败。reject 方法接收一个参数,即异步操作失败的原因。在 reject 方法被调用时,Promise 实例的 catch 方法会被调用,catch 方法的回调函数接收 reject 方法传递的参数。
// javascriptcn.com 代码示例 const promise = new Promise((resolve, reject) => { // 异步操作... if (/* 异步操作失败 */) { reject('失败'); } else { resolve('成功'); } }); promise.catch(error => { console.log(error); // 失败 });
在上面的代码中,当异步操作失败时,我们调用了 reject 方法,并将异步操作失败的原因传递给了 reject 方法。此时 Promise 状态从 Pending 转换为 Rejected,catch 方法的回调函数被调用,并接收了 reject 方法传递的参数。
3. 总结
本文详细讲解了 Promise 中的 Pending 状态转换方法,即 resolve 和 reject 方法。当异步操作成功时,我们可以调用 resolve 方法将 Promise 状态从 Pending 转换为 Fulfilled;当异步操作失败时,我们可以调用 reject 方法将 Promise 状态从 Pending 转换为 Rejected。希望本文能够帮助读者更好地理解 Promise 的使用,避免在使用 Promise 时出现问题。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65851db6d2f5e1655dfc94e7