博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
并发串行调用接口
阅读量:5986 次
发布时间:2019-06-20

本文共 2025 字,大约阅读时间需要 6 分钟。

这里思考比较少,不过因为事情本身比较简单,就简单处理了。毕竟我这种菜鸟,高大上的东西是从未停止过仰望的。备注下是因为如果有机会再用到类似的逻辑,可以拿来重新思考一下,另外,我还觉得有点儿TCP里”“的感觉喔,哈哈哈,毕竟场景类似,控制流量嘛

/**  * 代码块说明: 小并发串行调用接口处理大批量数据 * 依赖变量: data (原始数据) */var chunks = [],       // 数据切割存储    size = 50,         // 数据分片大小    concurrence = 4;   // 并发量    /* 按数据分片大小切割原始数据 */    while (data.length > 0){        chunks.push(data.splice(0, size));    }    var batchLength = chunks.length; // 切割后数据块数量    var steps = 0; // 游标,用于滑动读取切割后的数据块    /**     * 核心函数     * 变量说明: _i (游标, 用于定位分片数据)     *         cData (切割后的数据块数组)      *         len (切割后数据块数量)     *         c (发送请求的并发量)     */    var batchPush = function(_i, cData, len, c){
if (_i < len) { var _pulling = true; // 标识位 var _j = 0; // 临时变量,定位并发数据块位置 //分批请求 while (_pulling){ if (cData[_j + _i]){ $.ajax({ method: 'POST', url: 'xxx', data: JSON.stringify(cData[_j + _i]), dataType: 'json', success: function(rData){
// 接口返回码校验(此略) ++steps; // 并发都处理完后, 触发下一次并发(串行) if (steps % c === 0) { // 缓冲一秒 setTimeout(function(){
batchPush(steps, cData, len, c); }, 1000); } // 数据处理(此略) }, error: function(){
// 异常处理(此略) } }); } _j++; if (_j >= c){ _pulling = false; } } } else { // 全部发送完毕 steps = 0; } }; // 触发调用 batchPush(steps, chunks, batchLength, concurrence);

Anyway, it works. 有机会读一读”滑动窗口”的处理逻辑, 哈哈.

转载地址:http://biflx.baihongyu.com/

你可能感兴趣的文章
快速的React Native开发方法
查看>>
1.扩展方法2.接口的隐式实现和显式实现
查看>>
xcache 源码包编译安装
查看>>
前端开发思考与实践
查看>>
tcp/ip参数控制
查看>>
[分享]iOS开发-UIView顺时针旋转、逆时针旋转
查看>>
Conversion to Dalvik format failed with error 1的又一种情形
查看>>
Citrix VDI实战攻略之八:测试验收
查看>>
windows下安装memcached
查看>>
Java读取properties文件的思考
查看>>
分秒必争域的时间同步问题[为企业部署Windows Server 2008系列十四]
查看>>
《Storm分布式实时计算模式》——2.4 把toplogy提交到集群中
查看>>
防盗功能!Windows Phone 安全特性更上一层楼
查看>>
《Linux命令行大全》——第2章 导 航 2.1 理解文件系统树
查看>>
戴文的Linux内核专题:25 配置内核 (21)
查看>>
《Android游戏开发详解》一2.6 构建一个简单的计算器程序
查看>>
深入实践Spring Boot3.2.3 修改控制器
查看>>
《PHP、MySQL和Apache入门经典(第5版)》一一1.4 在Mac OS X上安装XAMPP
查看>>
《树莓派用户指南(第3版)》——1.2 Model A
查看>>
【SQL 性能优化】表的三种连接方式
查看>>