~~~ function createRequest(maxConcurrent) { let activeRequests = 0; const requestQueue = []; function processQueue() { if (activeRequests < maxConcurrent && requestQueue.length > 0) { const { url, params, resolve } = requestQueue.shift(); activeRequests++; // 发起请求的逻辑,这里使用 setTimeout 模拟异步请求 setTimeout(() => { makeRequest(url, params) .then((result) => { resolve(result); }) .finally(() => { activeRequests--; processQueue(); }); }, 0); } } function myRequest(url, params) { return new Promise((resolve) => { requestQueue.push({ url, params, resolve }); processQueue(); }); } return myRequest; } // 模拟请求函数 function makeRequest(url, params) { return new Promise((resolve) => { // 这里可以根据实际情况发起请求 // 这里使用 setTimeout 模拟异步请求 setTimeout(() => { resolve(`Result for ${url} with params ${params}`); }, 1000); // 延迟1秒模拟异步请求的响应时间 }); } // 示例使用: const urlList = ['https://example.com/api/1', 'https://example.com/api/2', 'https://example.com/api/3']; const myRequest = createRequest(2); // 最大并发量为2 Promise.all( urlList.map((url) => { const params = { /* 根据需要传递的参数 */ }; return myRequest(url, params); }) ) .then((results) => { console.log(results); // 打印所有请求的结果 }) .catch((error) => { console.error(error); // 处理错误 }); ~~~