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

JS手写代码篇---Pomise.race

6、promise.race

Promise.race() 静态方法接受一个 promise 可迭代对象作为输入,并返回一个 Promise。这个返回的 promise 会随着第一个 promise 的敲定而敲定。

比如说:

    //   原生promiserace;const p1 = new Promise((resolve, reject) => {setTimeout(() => {resolve("p1");}, 500);});const p2 = new Promise((resolve, reject) => {setTimeout(() => {resolve("p2");}, 100);});Promise.race([p1, p2]).then((value) => {console.log(value); //p1});

手写promise.race:

  • 输入可迭代的数组
  • 输出返回应该promise
  • 第一个完成的话就要全部结束,所以我们要设定标志词
  • 如果传入的不是promise怎么办,使用promise.relove将每个元素转换为Promise,以处理非Promise的情况。

代码如下:

      //  promise.racestatic race(array){// 判断是否为空if(array.length === 0){return ;}// 返回应该鑫的promisereturn new Commitment((resolve , reject) => {// 标志let close = false;// 开始遍历array.forEach((item) =>{Promise.resolve(item).then((res) => {if(!close){close = true;resolve(res);}}).catch((error) => {if(!close){close = true;reject(error);}})})})}

志词

  • 如果传入的不是promise怎么办,使用promise.relove将每个元素转换为Promise,以处理非Promise的情况。

代码如下:

      //  promise.racestatic race(array){// 判断是否为空if(array.length === 0){return ;}// 返回应该鑫的promisereturn new Commitment((resolve , reject) => {// 标志let close = false;// 开始遍历array.forEach((item) =>{Promise.resolve(item).then((res) => {if(!close){close = true;resolve(res);}}).catch((error) => {if(!close){close = true;reject(error);}})})})}

相关文章:

  • 界面控件DevExpress WinForms v24.2新版亮点:富文本编辑器功能全新升级
  • 程序的 “内存舞台”:深入解析虚拟地址空间与内存管理
  • 运维三剑客——grep
  • 简述MySQL优化锁方面你有什么建议?
  • Bug 背后的隐藏剧情
  • flutter常用动画
  • 新能源工厂环境监控系统如何提升电池生产洁净度
  • 直角坐标系下 dxdy 微小矩形面积
  • 服务器关机
  • element-plus bug整理
  • Spring boot 策略模式
  • AI重构SEO关键词精准定位
  • 唯创WT2606B TFT显示灵动方案,重构电子锁人机互动界面,赋能智能门锁全场景交互!
  • 计算机网络 - 关于IP相关计算题
  • C++23 <spanstream>:基于 std::span 的高效字符串流处理
  • 如何通过创新科技手段打造美术馆展厅互动体验,提升观众沉浸感?
  • 变色龙Ultra编译指南:从零开始
  • C#与 Prism 框架:构建模块化的 WPF 应用程序
  • C语言进阶--数据的存储
  • WSL中ubuntu通过Windows带代理访问github
  • 注册好网站以后怎么做/怎么下载需要会员的网站视频
  • 不同类型网站比较/外贸营销平台
  • 互联网舆情信息/网络营销中的seo是指
  • 搜索引擎优化中的步骤包括/整站优化
  • 知名购物网站有哪些/seo综合查询什么意思
  • 公关策划网站建设/北京seo营销培训