比如编写一个createFetch(limit)
函数,新函数为Promise异步请求,同时多次调用这个新函数时,有并发的限制,即同一时刻最多只能有limit个请求在执行。
如下面的这个例子,创建了一个newFetch的新函数,同时调用了多次newFetch,但最多同时只有2个在发起请求,某一个结束后,才开始下一个。
const newFetch = createFetch(2);
newFetch(url1);
newFetch(url2);
newFetch(url3);
newFetch(url4);
newFetch(url5);
请问createFetch()函数如何实现。
我个人想了一些,比如用队列存储将要发起请求的数据,Promise.race()判断当前正在进行的Promise哪个先完成了等等,但最终还是没有完全实现这个功能。
好想法!
但是已经有别人封装好现成的库了,周均下载量 400w+ 的 p-queue。
如果对实现感兴趣可以直接读它的源码。