ES9(2018)Promise.prototype.finally()
Posted 优小U
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ES9(2018)Promise.prototype.finally()相关的知识,希望对你有一定的参考价值。
指定不管最后状态如何都会执行的回调函数。
Promise.prototype.finally()
方法返回一个Promise
,在promise
执行结束时,无论结果是fulfilled
或者是rejected
,在执行then()
和catch()
后,都会执行finally
指定的回调函数。这为指定执行完promise
后,无论结果是fulfilled
还是rejected
都需要执行的代码提供了一种方式,避免同样的语句需要在then()
和catch()
中各写一次的情况。
new Promise((resolve, reject) => {
setTimeout(() => {
resolve('success')
}, 1000)
}).then(res => {
console.log(res)
}).catch(err => {
console.log(err)
}).finally(() => {
console.log('finally')
})
场景1:loading 关闭
需要每次发送请求,都会有loading提示,请求发送完毕,就需要关闭loading提示框,不然界面就无法被点击。不管请求成功或是失败,这个loading都需要关闭掉,这时把关闭loading的代码写在finally里再合适不过了。
场景2:数据库断开连接
let connection
db.open()
.then(conn => {
connection = conn
return connection.select({
name: 'Jane'
})
})
.then(result => {
// Process result
// Use `connection` to make more queries
})···
.catch(error => {
// handle errors
})
.finally(() => {
connection.close()
})
以上是关于ES9(2018)Promise.prototype.finally()的主要内容,如果未能解决你的问题,请参考以下文章