Uniapp Promise异步请求限制并发数量
2023-03-29 10:48:42    28    0    0
admin

        在项目中,我们异步请求可能使用的评率非常高,特别是像遇到需要同时请求几十个接口的情况下,我们应该怎么避免请求一股脑儿的全部发送到服务器端,最终倒是服务压力巨大,这里我们就需要做节流,限制前端发送 请求数量,网上其实也有很多方案,但实际对代码的侵入太大,这里就不做过多描述,这里使用一种更为简单的方法,直接上代码:

定义同时发送请求的数量不超过5个,后进入的
let maxRequestCount = 5
let maxRequestInterval = 500
async throttleGet(url, data) {
    return new Promise((resolve, reject)=> {
        exec();
        function exec(){
            if(maxRequestCount > 0) {
                maxRequestCount--;
                    httpRequest({
                    url: url,
                    method: "GET",
                    data: (data || {}),
                    dataType:"json",
                    takeToken: true,
                    headers:{
                        "Content-Type" : "application/x-www-form-urlencoded"
                    }
                }).then(res => {
                resolve(res)
                }).catch(e => {
                    reject(e);
                }).finally(() => {
                    //执行完以后将占用的请求数量归还
                    maxRequestCount++
                });
        }else{
            //无可用的请求就过指定时间再尝试
            setTimeout(function(){
                exec()
            }, maxRequestInterval)
        }
    }
    });
}

 

上一篇: 没有了

下一篇: 来一个bootstrap php form表单类,可以结合表单验证类一起使用

28
登录 后评论.
没有帐号? 现在注册.
0 评论
Table of content