/** * 实现一个管制 promise 并发个数限度在特定个数的函数(限度应用async和await实现): * 例:如须要发送 20个 fetch 申请,然而同时限度发送个数在 5 个以内,如果 5 个申请发送进来了还剩15个申请没有发送,前5个申请任何一个申请胜利就要将残余15个中一个增加到4个正在申请的 pool外面,最终并发申请为5。 * @Param poolLimit 申请个数限度 * @Param argsArray 申请参数 * @Param iteratorFn 申请函数 * @Return promise 执行后果 */async function asyncPool(poolLimit, argsArray, iteratorFn) {  const res = [];  const excutings = [];  for (const args of argsArray) {    let p = Promise.resolve().then(() => iteratorFn(args));    res.push(p);    if (poolLimit < argsArray.length) {      const e = p.then(() => excutings.splice(excutings.indexOf(e), 1));      excutings.push(e);      if (excutings.length >= poolLimit) {        await Promise.race(res);      }    }  }  return Promise.all(res);}