当前位置: 首页 > news >正文

[面试]手写题-Promise.all() Promise.race()

Promise.all()

接收一个Promise数组,数组中如有非Promise项,则此项当做成功
如果所有Promise都成功,则返回成功结果数组
如果有一个Promise失败,则返回这个失败结果

static all(promises) {const result = [];//创建一个空数组用于存储每个Promise的结果let count = 0;// 返回一个新的MyPromise实例return new MyPromise((resolve, reject) => {//将解析值存入结果数组并检查是否完成const addData = (index, value) => {result[index] = value;// 将值存入结果数组的对应位置count++;// 当所有Promise都完成时,if (count === promises.length) resolve(result)}// 遍历传入的Promise数组promises.forEach((promise, index) => {// 检查当前项是否是MyPromise实例if (promise instanceof MyPromise) {//  如果是Promise,等待其状态变更promise.then(res => {addData(index, res)}, err => {reject(err))})} else { // 非Promise值直接存入结果数组addData(index, promise)}})})
}

Promise.race()

接收一个Promise数组,数组中如有非Promise项,则此项当做成功
哪个Promise最快得到结果,就返回那个结果,无论成功失败

static race(promises) {// 返回一个新的MyPromise实例return new MyPromise((resolve, reject) => {// 遍历传入的Promise数组promises.forEach(promise => {// 检查当前项是否是MyPromise实例if (promise instanceof MyPromise) {promise.then(res => {resolve(res)}, err => {reject(err)})} else {resolve(promise)}})})
}

参考:

看了就会,手写Promise原理,最通俗易懂的版本!!!
09-手写Promise-Promise.all方法的实现

http://www.lqws.cn/news/584497.html

相关文章:

  • 机器学习20-线性网络思考
  • 第三十六章 CAN——控制器局域网络接口
  • 字节跳动 C++ QT PC客户端面试
  • 论文中用matplotlib画的图,如何保持大小一致。
  • Vue2中使用DHTMLX Gantt
  • 深入理解Webpack的灵魂:Tapable插件架构解析
  • 使用Dirichlet分布进行随机初始化
  • 文心大模型 4.5 系列开源首发:技术深度解析与应用指南
  • StackGAN(堆叠生成对抗网络)
  • vscode 改注释的颜色,默认是灰色的,想改成红色
  • Prompt Enginering
  • 会议室预约系统的典型架构
  • Prompt 精通之路(一)- AI 时代的新语言:到底什么是 Prompt?为什么它如此重要?
  • Python 数据分析与机器学习入门 (五):Matplotlib 数据可视化基础
  • ubuntu源码安装python3.13遇到Could not build the ssl module!解决方法
  • 使用nomachine远程连接ARM设备桌面
  • 【Vscode】Vscode切换成中文语言
  • Java历史:从橡树到火星探索,从微软法律战到Spring、Gradle
  • Java web1(黑马)
  • django 数据表外键 删除时 对应表的数据不删除如何设置
  • 卫朋:华为流程体系拆解系列——IPD流程L1-L6分级导入实战演练
  • Junit_注解_枚举
  • 机器学习在智能仓储中的应用:库存管理与物流优化
  • SpringCloud系列(43)--搭建SpringCloud Config客户端
  • 后台管理系统的诞生 - 利用AI 1天完成整个后台管理系统的微服务后端+前端
  • Nestjs框架: Nestjs 复杂企业应用场景架构设计分析
  • Prompt 精通之路(五)- 构建你的“AI 指令系统”:超越简单提问的 CRISPE 与 APE 框架
  • 基于Spring Boot的绿园社区团购系统的设计与实现
  • 在Linux系统上怎么优化Oracle数据库配置
  • 导入apex报错AttributeError: module ‘torch‘ has no attribute ‘library‘