javascript - 接收参数的 JavaScript Promise.prototype.finally()
问题描述
为什么Promise.prototype.finally()不接收任何参数?
文档说:
finally 回调不会收到任何参数,因为没有可靠的方法来确定承诺是否被履行或拒绝。这个用例正好是在你不关心拒绝原因或履行价值的时候,所以没有必要提供它
但是,我可以在 Promise 原型中添加一个简单的方法,将其命名为finally2 ( Promise.prototype.finally2
),它可以接收结果,并且可以可靠地确定 promise 是否被履行或拒绝。
Promise.prototype.finally2 = function(callback){
return this.then(result => callback(result), result => callback(undefined, result));
}
我理解(如文档所述)用例Promise.prototype.finally
正是当您不关心拒绝原因或履行价值时。
我的问题是:如何确定承诺是在 中实现还是被拒绝是不可靠的Promise.prototype.finally
?
Promise.prototype.finally2 = function(callback){
return this.then(result => callback(result), result => callback(undefined, result));
}
Promise.resolve(2).finally((...args) => console.log('finally:resolve =>', args));
Promise.reject(2).finally((...args) => console.log('finally:reject =>', args));
Promise.resolve(2).finally2((...args) => console.log('finally2:resolve =>', args));
Promise.reject(2).finally2((...args) => console.log('finally2:reject =>', args));
解决方案
推荐阅读
- python - 将图例移出图形时,由线条和图片组成的matplotlib图例标签丢失线条
- python - 从 Python 网络爬虫创建 SQL 数据库
- python - 使用正则表达式python将文本文件拆分为单词
- sql-server - 如何防止 SQL Server 事务卡住?
- r - 从公司电脑上的库安装/加载包时出现 R 错误
- c++ - 为什么结构和类模板在空特化上需要明确的尖括号语法?
- amazon-web-services - 在没有确认的情况下将 AWS SNS 订阅到 HTTP 端点?
- html - 跨越视口宽度的背景颜色
- python - 没有名为 Selenium 的模块;已满足要求
- java - 如何在 Java 中旋转二维数组