前言
随着前端技术和语言的发展,对于异步操作的需求也逐渐增多,而 Promise 就是解决异步操作的一种解决方案。在 Promise 中,then()、catch() 和 finally() 是常用的方法,本文将详细解析这三个方法的用法和意义。
then()
Promise 的主要功能就是封装异步操作,并在异步操作结束后执行回调函数。then() 方法就是用来指定异步操作成功时所执行的回调函数。
语法:promise.then(onFulfilled, onRejected)
- onFulfilled: 成功时执行的函数,其参数为异步操作返回的结果
- onRejected: 失败时执行的函数,其参数为异常信息
示例代码:
-- -------------------- ---- ------- --- ------- - --- ------------------------- ------- - ------------- -- ------------------- ------ -- ---- --- ----------------------------- - -- ------ -------------------- -- ------- -- --------------- - -- ------ ------------------- ---
在实际应用中,then() 方法也可以链式调用,这时每个回调函数都将依次执行。
示例代码:
-- -------------------- ---- ------- --- ------- - --- ------------------------- ------- - ------------- -- ----------- ------ -- ---- --- ----------------------------- - -- ------- -------------------- -- - ------ ------ - -- ------------------------ - -- ------- -------------------- -- - ------ ------ - -- ------------------------ - -- ------- -------------------- -- - ---
catch()
在 Promise 中,如果异步操作执行失败,应该使用catch()方法来指定错误处理的回调函数。 catch() 方法接收一个参数,即表示出错原因的对象,可以是字符串、数字或 Error 对象。
语法:promise.catch(onRejected)
示例代码:
-- -------------------- ---- ------- --- ------- - --- ------------------------- ------- - ------------- -- ---------- ----------------- ------ -- ---- --- ----------------------------- - -- ------ -------------------- ------------------------ - -- ------ --------------------------- -- ------ ---
需要注意的是,如果 catch() 方法中没有进行异常处理,那么异常会被继续传递到下一个 catch() 方法中。
示例代码:
-- -------------------- ---- ------- --- ------- - --- ------------------------- ------- - ------------- -- ---------- ----------------- ------ -- ---- --- ----------------------------- - -- ------ -------------------- ------------------------ - -- --------- ----- --- ------------- -- ----------- ------------------------ - -- --------- --------------------------- -- ------ -- --------- ---
finally()
finally() 方法在 Promise 的异步执行结束后无论成功失败都会执行,因此可以用于在执行异步操作时关闭弹窗等回收资源的操作。
语法:promise.finally(onFinally)
- onFinally: 无论成功或失败都要执行的函数
示例代码:
-- -------------------- ---- ------- --- ------- - --- ------------------------- ------- - ------------- -- ------------------- ------ -- ---- --- ----------------------------- - -- ------ -------------------- -- ------- ------------------------ - -- ------ ------------------- --------------------- - -- ------- -- -------------------- --
总结
在 Promise 中,then()、catch() 和 finally() 是很重要的方法,它们可以让我们更加优雅的封装异步操作。同时,在实际的应用中,我们也可以通过链式调用来串联多个操作,从而简化代码的书写。
以上便是 Promise 中 then()、catch() 和 finally() 方法的详细解析,希望能对大家有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/646c8ab3968c7c53b0b80f5e