当前位置: 首页 > 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.dtcms.com/a/263311.html

相关文章:

  • 博图SCL编程:结构体(STRUCT)使用详解与实战案例
  • HTML<span>元素详解
  • 安装bcolz包报错Cython.Compiler.Errors.CompileError: bcolz/carray_ext.pyx的解决方法
  • 条件运算符和逗号运算
  • Intel Fortran Compiler (ifx) 详细使用指南:新一代 Fortran 编译器在流体动力学模拟中的应用
  • 51单片机CPU工作原理解析
  • python环境快速搭建
  • 深入比较 Gin 与 Beego:Go Web 框架的两大选择
  • Spring Boot 统一功能处理:拦截器详解
  • 机器视觉检测系统的影响因素解析
  • Prompt 精通之路(七)- 你的终极 AI 宝典:Prompt 精通之路系列汇总
  • 《Building REST APIs with Flask》读后感
  • 打造现代Web应用的高效解决方案:Full Stack FastAPI模板
  • JVM 垃圾回收(GC)笔记
  • Nestjs框架: Nestjs 复杂企业应用场景架构设计分析
  • WPF中依赖属性和附加属性
  • API接口安全-2:签名、时间戳与Token如何联手抵御攻击
  • 时序数据集---UWave
  • 显著性预测 SUM
  • tcpdump工具交叉编译
  • 《JMS事务性会话彻底解析:消息监听中的 commit、rollback 和幂等设计》
  • 每天一个前端小知识 Day 17 - 微前端架构实战与 Module Federation
  • 记录H5内嵌到flutter App的一个问题,引发后面使用fastClick,引发后面input输入框单击无效问题。。。
  • BI软件选型:7款可私有部署产品对比
  • 利用不坑盒子的Copilot,快速排值班表
  • 在 Vue3 + Element Plus 中实现 el-table 拖拽排序功能
  • 【c语言课程设计】单选题考试系统(无链表,含码源)
  • 多校区在线跑腿小程序源码系统搭建平台 PHP+MySQL组合开发 含完整的搭建教程
  • 商品中心—16.库存分桶调配的技术文档
  • 【分布式】自定义统一状态机流转设计