Promise 是一种异步编程解决方案,可以避免回调函数嵌套的问题,使代码更加清晰易读。Promise 对象表示一个异步操作的最终完成或失败,并且可以将回调函数分为两种:成功的回调函数和失败的回调函数。当 Promise 对象的状态改变时,会自动调用相应的回调函数。
Promise 对象有三种状态:pending、fulfilled、rejected。当 Promise 对象创建后,一开始是 pending 状态,表示异步操作还未完成。当异步操作执行成功时,Promise 对象的状态变为 fulfilled,同时调用成功的回调函数;当异步操作执行失败时,Promise 对象的状态变为 rejected,同时调用失败的回调函数。
Promise 对象的状态
pending
Promise 对象的初始状态是 pending,表示异步操作还未完成。在这个状态下,可以通过 then 方法注册成功和失败的回调函数,但是这些回调函数不会立即执行,而是等待异步操作完成后再执行。
const promise = new Promise((resolve, reject) => { // 异步操作 }); console.log(promise); // Promise {<pending>}
fulfilled
当异步操作执行成功时,Promise 对象的状态变为 fulfilled,表示异步操作已经成功完成。此时会自动调用成功的回调函数,可以通过 then 方法获取异步操作的结果。
-- -------------------- ---- ------- ----- ------- - --- ----------------- ------- -- - ------------------- --- ------------------- -- - -------------------- -- --------- --- --------------------- -- ------- ------------- ----------
rejected
当异步操作执行失败时,Promise 对象的状态变为 rejected,表示异步操作失败。此时会自动调用失败的回调函数,可以通过 catch 方法获取异步操作的错误信息。
-- -------------------- ---- ------- ----- ------- - --- ----------------- ------- -- - ---------- --------------- --- ------------------- -- - ------------------- -- ------ ---- --- --------------------- -- ------- ------------ ------ -----
Promise 对象的回调函数
当 Promise 对象的状态改变时,会自动调用相应的回调函数。Promise 对象的回调函数有两种:成功的回调函数和失败的回调函数。
成功的回调函数
当 Promise 对象的状态变为 fulfilled 时,会自动调用成功的回调函数。成功的回调函数可以通过 then 方法注册,可以获取异步操作的结果。
const promise = new Promise((resolve, reject) => { resolve('success'); }); promise.then(result => { console.log(result); // 'success' });
失败的回调函数
当 Promise 对象的状态变为 rejected 时,会自动调用失败的回调函数。失败的回调函数可以通过 catch 方法注册,可以获取异步操作的错误信息。
const promise = new Promise((resolve, reject) => { reject(new Error('fail')); }); promise.catch(error => { console.log(error); // Error: fail });
Promise 对象的链式调用
Promise 对象的回调函数可以链式调用,即在 then 方法中返回一个新的 Promise 对象,继续注册回调函数。这样可以解决回调函数嵌套的问题,使代码更加清晰易读。
-- -------------------- ---- ------- ----- -------- - --- ----------------- ------- -- - ------------------- --- -------- ------------ -- - -------------------- -- --------- ------ --- ----------------- ------- -- - -------------------- --- -- ------------ -- - -------------------- -- ---------- ---
总结
Promise 对象是一种异步编程解决方案,可以避免回调函数嵌套的问题,使代码更加清晰易读。Promise 对象有三种状态:pending、fulfilled、rejected,当 Promise 对象的状态改变时,会自动调用相应的回调函数。Promise 对象的回调函数有两种:成功的回调函数和失败的回调函数。Promise 对象的回调函数可以链式调用,可以解决回调函数嵌套的问题。在实际开发中,合理使用 Promise 对象可以提高代码的可读性和可维护性。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65f349802b3ccec22fbcce09