Promise.prototype.finally()
无论上一个promise成功还是失败,都会执行finally里的回调。
用法示例:
let promise = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('成功')
}, 1000)
}).then(res => {
console.log('success')
}).catch(err => {
console.log(err)
}).finally(cb => {
cb && cb()
})
在小程序开发者工具中,可以直接在promise使用,但是到真机上会报“finally is not a function”,所以,在app.js中对finally进行了扩展
onLanuch: function(){
Promise.prototype.finally = function(callback){
let P = this.constructor;
return this.then(
value => {
P.resolve(callback()).then(() => value)
},
reason => {
P.resolve(callback()).then(() => { throw reason })
}
)
}
}