作为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 对象的状态如何。 [2023-11-09 01:16:44 | AI写代码神器 | 277点数解答]
- 作为javascript开发,promise 的 finally 怎么实现的?(277点数解答 | 2023-11-09 01:16:44)211
- import math class ball: """ 实现 def __init__(self, radius) 函数, 他有一个参数radius, 并为对象初始化一个变量self.radius """ """ 实现 def surface_area(self) 函数, 通过self.radius计算球的表面积, 并将这个表面积返回 """ """ 实现 def volume(self) 函数, 通过self.radius计算球的体积, 并将这个体积返回 """ """ 在评测文件中将这样调用这个类 ball = ball(eval(input())) print("球的半径:{:.2f}".format(ball.radius)) print("球的表面积:{:.2f}".format(ball.surface_area())) print("球的体积:{:(261点数解答 | 2024-11-28 21:19:39)206
- 在java开发中,final、finally、finalize有什么区别?(239点数解答 | 2023-11-07 22:20:58)253
- 作为javascript开发,简述es6 promise 的作用?(376点数解答 | 2023-11-09 01:26:34)194
- 作为javascript开发,promise 构造函数是同步执行还是异步执行,那么 then 方法呢 ?(186点数解答 | 2023-11-09 01:48:42)193
- try catch finally 存在return 以哪个return为主(729点数解答 | 2024-06-15 16:39:38)219
- 循环点亮 led 灯: (1) 使用定时器to 的方式 1,实现 8个 led 由上至下间隔 1s 流动,其中每个 led 亮 0.5s,灭0.5s,一直重复。。 (2) 使用定时器 to 的方式 1,实现 8个 led 逐个点亮,间隔 1s,一直重复。。(1193点数解答 | 2024-12-27 15:10:29)198
- 生成无名杀技能代码:技能名放逐,技能效果主动技限回合使用两次,你可指定一名角色失去技能或摸两张牌使用 JavaScript 实现(528点数解答 | 2025-08-27 23:16:22)46
- 在ios开发中,写一个完整的代理,包括声明、实现(268点数解答 | 2023-11-08 00:39:55)204
- 作为javascript开发,简述如何使用animation 实现⾃定义动画 ?(333点数解答 | 2023-11-09 01:50:07)189
- 编写 js 代码,使用 for 循环,实现 1 到 100 相加,将结果输出到页面。(240点数解答 | 2024-05-20 22:11:29)263
- 编写 js 代码,使用 while 循环,实现 1 到 100 相加,将结果输出到页面。(47点数解答 | 2024-05-20 22:16:48)243