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()的主要内容,如果未能解决你的问题,请参考以下文章

ES9(2018)for await...of

ES9(2018)RegExp扩展

ES9(2018)String 扩展 标签模板里字符串转义

ES9(2018)Promise.prototype.finally()

ES9常用新语法

ES9常用新语法