JavaScript 开发:揭秘 Promise 的 finally 方法的实现方式
Promise 的 finally 是通过 Promise.prototype.finally 方法实现的。这个方法会在 Promise 对象的状态变为 resolved 或 rejected 时被调用,无论调用 resolve 或 reject 时传递的参数是什么。 以下是一个简单的实现: ```javascript Promise.prototype.finally = function(callback) { var promise = this; return new Promise(function(resolve, reject) { promise.then(function(value) { callback(); resolve(value); }, function(error) { callback(); reject(error); }); }); }; ``` 在这个实现中,我们创建了一个新的 Promise,然后使用 then 方法来处理原始 Promise 的 resolved 和 rejected 状态。在 then 方法中,我们先调用回调函数,然后根据 Promise 的状态调用 resolve 或 reject。 注意,这个实现并不是标准的 Promise.prototype.finally,因为标准的 finally 方法会在 Promise 对象的状态变为 resolved 或 rejected 时立即执行回调函数,而这个实现会在 Promise 对象的状态变为 resolved 或 rejected 时才调用回调函数。如果你需要立即执行回调函数,你可以使用以下的实现: ```javascript Promise.prototype.finally = function(callback) { var promise = this; return promise.then(callback, callback); }; ``` 在这个实现中,我们使用 then 方法的两个参数来调用回调函数,无论 Promise 对象的状态如何。 ######[AI写代码神器 | 277点数解答 | 2023-11-09 01:16:44]
- Java 实现计算机硬件模拟:从 PCI 设备到主板、计算机的启动与关闭(字节豆包 | 716点数解答 | 2024-12-08 23:38:38)326
- Java 代码:模拟计算机主板启动与关闭 PCI 设备全流程(字节豆包 | 637点数解答 | 2024-12-09 08:31:54)293
- JavaScript 开发:揭秘 Promise 的 finally 方法的实现方式(阿里通义 | 277点数解答 | 2023-11-09 01:16:44)257
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)345
- Java 实战:Vehicle 类与 User 类实现机动车速度功率控制( | 968点数解答 | 2024-03-12 11:26:25)543
- JavaScript:创建 Animal 类与 Dog 类,重写 speak 方法并实例调用(字节豆包 | 63点数解答 | 2024-10-29 08:20:51)197
- Java 实战:动物类、接口与继承实现鸟儿吃虫和飞翔功能(字节豆包 | 183点数解答 | 2024-09-19 15:53:55)286
- Java 实战:动物类、接口与继承,实现鸟儿吃虫与飞翔功能(字节豆包 | 184点数解答 | 2024-09-19 16:45:48)309
- Java 实现 BankAccount 类:账户余额管理与测试全解析(字节豆包 | 420点数解答 | 2024-10-11 08:48:21)315
- Java 编程:实现教师与学生类的创建、继承及属性操作(字节豆包 | 745点数解答 | 2024-10-16 18:40:42)391
- Java 实现 Circle 类:全面封装圆的属性与方法(字节豆包 | 256点数解答 | 2024-10-27 16:34:37)244
- Java 实现继承关系:Fu 类、Zi 类与测试类 Example04 代码解析及注意要点(字节豆包 | 251点数解答 | 2024-12-12 09:36:45)246