function multiRequest(urls, max) { return new Promise((resolve, reject) => { const requestRes = {} const len = urls.length //总大小 let finshedCount = 0 //已完成 let running = 0 // 正在请求中 let index = 0 function addQueue() { index++ running += 1 fetch(urls[index]).then(res => { requestRes[index - max] = res }).catch(err => { requestRes[index - max] = err }).finally(() => { running -= 1 finshedCount += 1 if (running < max && finshedCount < len) { addQueue() } if (finshedCount == len) { resolve(Array.from({ ...requestRes, length: len })) } }) if (running < max && finshedCount < len) { addQueue() } } addQueue() }) }
点赞 评论

相关推荐

12-06 21:07
已编辑
中山大学 前端工程师
现在秋招已结束,整理发一些面经笔经,回馈一下牛客社区。2024.10.12可以选择两套试卷,一套是Vue的,一套是React的。20道基础选择题2道Vue3道编程题基础选择题(不全):1.SSL相关的2.哪种方法不能获得动态NodeList&nbsp;&nbsp;选项有&nbsp;querySelector、getElementByTagName、document.forms......我选了document.forms,错了.....应该是querySelectorAll会返回静态的NodeList3.js异步执行,微任务和宏任务4.数字签名的基于的技术&nbsp;选项有哈希、对称加密、非对称加密、数字证书......5.打印相关的,记得程序里有ValueOf和assign。&nbsp;好吧,前天ValueOf确实只是返回this值本身,如果是对象的话就相当于返回对象本身。6.float相关,给了两个box,都是float:left,把左边的box的margin-right调成-1px会发生什么.选项还特别考察了元素的重叠的问题.7.域名解析。8.大根堆。让我模拟插入,选择插入后正确的堆。也没说元素列表是用什么方式展示的,或者可以默认是二叉树数组的按序输出?其实正确的解法似乎是看选项,然后看各个选项是否满足大根堆的性质。Vue题:1.给了一个程序,和Vue的响应式数据相关,是vue3,有ref和computed,还定义了getter和setter。选择正确的打印结果。2.v-on和v-bind的简写:@和:编程题:1.给一个数字序列,给出最小值的第一个出现位置和最后的位置2.给若干个字符串,依次给出前i个字符串的最长公共前缀3.给出一个n*m的由&nbsp;*和#组成的地图,可以向右和向下走,只能到*,但可以跨过#,如果距离>1,那么该距离只能使用1次。其实3道题都不难,主要考察实现能力,算法成分不是很多,考暴力解就能做出来。第2道题只过了60%,超时了......第3道题debug没de出来,到最后三秒钟突然醒悟是地图存储的数组的问题,已经来不及改了......
查看13道真题和解析 投递京东等公司10个岗位
点赞 评论 收藏
分享
12-07 17:17
已编辑
门头沟学院 Web前端
省流:无八股,四十分钟项目输出,二十分钟笔试题&nbsp;+&nbsp;反问面试体验最满意的一次,虽然开头细细的讲项目细节导致节奏有点慢了,只讲出了两个核心,还有两个核心没讲,但面试官很耐心的听完并跟我确认上下文细节,下次继续优化-&nbsp;自我介绍-&nbsp;挑一个简历上最值得讲的项目开始表演&nbsp;&nbsp;-&nbsp;背景介绍(某游戏&nbsp;mod&nbsp;开发组前端成员,主要负责一些页面制作宣传的需求,后期组内其他成员提出&nbsp;wiki&nbsp;制作需求,开始了调研之旅)&nbsp;&nbsp;-&nbsp;主流&nbsp;wiki&nbsp;框架(语法晦涩难懂,开发者需要时间去学习成本;使用&nbsp;mdx&nbsp;可以无压力上手&nbsp;+&nbsp;需求/问题快速沟通解决;Astro&nbsp;我有实践经验,阅读过核心&nbsp;api&nbsp;源码,知道底层实现与扩展/局限性)&nbsp;&nbsp;-&nbsp;反问了一下这个项目什么时候开始做的:第一版落地时间周期(去年5月调研,7月开始第一版开发,9月落地,到12月前长期维护&nbsp;+&nbsp;新功能上线)&nbsp;&nbsp;-&nbsp;第一版落地后遇到的问题(项目结构混乱,非业务核心代码与核心混在一起,网站无法进行复用)&nbsp;&nbsp;-&nbsp;解决方案(采用&nbsp;monorepo,重新梳理整个项目业务核心逻辑与周边生态逻辑,进行归类划分并确定职责和要暴露的接口)&nbsp;&nbsp;-&nbsp;成果(项目职责分离(解包,语法检查,wiki&nbsp;核心,组件库,针对不同&nbsp;ide&nbsp;的检查适配器)对整个项目有了个更好的认知,知道整个项目的进展和状态)&nbsp;&nbsp;-&nbsp;带来的新问题(此时已经半小时了,面试官让我挑2点最大的问题(不同包之间没有权限区分;一些历史遗留插件没法及时迁移,付出了一定开发成本)其实这里可以讲一下代码复用,参考了&nbsp;Astro&nbsp;Starlight&nbsp;项目落地后发现全局&nbsp;Astro&nbsp;特性被局限至仅&nbsp;集成暴露&nbsp;api;部分&nbsp;api&nbsp;使用后效果不一样(Astro&nbsp;官方给出了解决该问题的实验性特性))-&nbsp;网站访问量多少(不多,算是技术能力锻炼产品和圈子内的服务用产品)-&nbsp;是不是&nbsp;minecraft&nbsp;的发烧友(还真是,高中就喜欢玩珍珠炮,并且从里面开始接触到编码解码概念和一些二进制理论)-&nbsp;笔试&nbsp;&nbsp;-&nbsp;版本号排序(后续讨论了一下健壮性和&nbsp;plus)&nbsp;&nbsp;-&nbsp;Promise.all&nbsp;实现&nbsp;&nbsp;-&nbsp;写一个后台管理系统的侧边栏组件,伪代码即可(顺便聊了一下&nbsp;vue&nbsp;compiler&nbsp;的&nbsp;props&nbsp;宏展开)&nbsp;&nbsp;-&nbsp;本来还有第四题,面试官说不用了,直接开聊(以为会问&nbsp;Promise&nbsp;顺序,他说他不喜欢考这些,然后聊了一下&nbsp;Promise&nbsp;内返回&nbsp;Promise&nbsp;的问题,涉及到&nbsp;v8&nbsp;以及&nbsp;ecma&nbsp;resolveThenableJob&nbsp;规范,不过面试官似乎不是很了解这里)-&nbsp;反问&nbsp;&nbsp;-&nbsp;我需要提升的地方(计算机四大件别丢了,讲的很认真)&nbsp;&nbsp;-&nbsp;部门主要技术栈(react,然后就是要了解一点&nbsp;node,不用做开发,nginx了解即可,吧啦吧啦的,后续忘了)&nbsp;&nbsp;-&nbsp;新技术会用吗(会做研讨会和研究,不过更多是基建部门负责,他们会看手册学习并尝试在小项目落地)&nbsp;&nbsp;-&nbsp;主要业务(搜索中台,技术&nbsp;+&nbsp;业务结合部门?面试官好像一时也没法彻底讲清楚)&nbsp;&nbsp;-&nbsp;部门压力大吗(不算大(真的吗))&nbsp;&nbsp;-&nbsp;入职要注意的事情(需要两个月进行磨合,因为有些事情可能没有给到完整上下文就让你做,需要自己翻手册或找&nbsp;mentor&nbsp;问,流程清楚后就轻松了,后面一堆不记得了)&nbsp;&nbsp;-&nbsp;转正?(会给,但是看分到的名额,说25届留了两个实习生,刚好两个名额就全给他们了,然后细细的讲了一下转正前会给你的各种通知和要做的事情)&nbsp;&nbsp;-&nbsp;就面试来说有啥需要改进的地方(笔试侧边栏组件你可以做的更好点,抽象级别可以更高点,加强一下基础框架学习使用)体验最好的一次,唯一的遗憾就是讲细节太多了,还有一些核心没讲出来。其他我都很满意,1&nbsp;小时后收到了三面时间选择通知许愿三面能遇到像这样体验这么好的面试官
查看16道真题和解析
点赞 评论 收藏
分享
牛客网
牛客企业服务