JS onload 时实现多个函数队列执行

function firstFuntion(){
        console.log("我是first啊");
    }
   function secondFuntion(){
        console.log("我是second啊");
    }
   function addLoadEvent(func){
       var oldonload = window.onload;
       if(typeof window.onload != 'function'){
           window.onload = func;
       }else{
           window.onload = function(){
               oldonload();
               func();
               console.log("队列成功了");
           }
       }
   }
    addLoadEvent(firstFuntion);
    addLoadEvent(secondFuntion);

 

转载于:https://www.cnblogs.com/zzzzzzzsy/p/6624965.html

你可以使用 JavaScript 中的 Promise 和 async/await 语法结合 XMLHttpRequest 或 fetch API 来实现异步请求并控制并发数量。 具体实现步骤如下: 1. 定义一个变量 `concurrency` 表示你想要控制的并发请求数量,初始化为 3。 2. 定义一个数组 `queue`,用于存储待处理的请求。 3. 定义一个函数 `handleNextRequest`,该函数用于处理队列中下一个请求。该函数会从 `queue` 数组中取出一个请求,并发送它。 4. 当有新请求到达,将其加入到 `queue` 数组中,并判断当前正在处理的请求数量是否已经达到 `concurrency`。如果没有达到,则调用 `handleNextRequest` 函数处理队列中的下一个请求。 5. 当某个请求完成后,调用 `handleNextRequest` 函数处理队列中的下一个请求。 下面是一个示例代码: ```javascript const concurrency = 3; let running = 0; const queue = []; function sendRequest(url) { return new Promise((resolve, reject) => { const xhr = new XMLHttpRequest(); xhr.open('GET', url); xhr.onload = () => resolve(xhr.responseText); xhr.onerror = () => reject(xhr.statusText); xhr.send(); }); } async function handleNextRequest() { if (queue.length === 0 || running >= concurrency) { return; } running++; const request = queue.shift(); try { const response = await sendRequest(request.url); request.resolve(response); } catch (error) { request.reject(error); } finally { running--; handleNextRequest(); } } function addRequest(url) { return new Promise((resolve, reject) => { queue.push({ url, resolve, reject }); handleNextRequest(); }); } ``` 使用,你只需要调用 `addRequest` 函数来添加请求即可: ```javascript addRequest('/api/data1').then(response => { console.log(response); }).catch(error => { console.error(error); }); addRequest('/api/data2').then(response => { console.log(response); }).catch(error => { console.error(error); }); // ... ``` 这样,你就可以控制同只有 3 个并发请求了。注意,这个示例代码只是一个简单的示例,实际情况下可能需要根据具体需求做一些调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值