併發序列呼叫介面
這裡思考比較少,不過因為事情本身比較簡單,就簡單處理了。畢竟我這種菜鳥,高大上的東西是從未停止過仰望的。備註下是因為如果有機會再用到類似的邏輯,可以拿來重新思考一下,另外,我還覺得有點兒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. 有機會讀一讀”滑動視窗”的處理邏輯, 哈哈.
相關文章
- 【高併發】深入解析Callable介面
- 如何設計高併發介面?
- Go併發呼叫的超時處理Go
- webservice介面呼叫Web
- app 呼叫介面APP
- 聊聊介面最大併發處理數
- Promise 序列呼叫面試題Promise面試題
- 吃個快餐都能學到序列、並行、併發並行
- 如何呼叫api介面API
- Java 併發程式設計之 Condition 介面Java程式設計
- 使用併發工具實現 RPC 呼叫流量控制RPC
- windows下使用redis解決.net6.0下人工呼叫介面時分配位置的併發問題WindowsRedis
- Java併發程式設計序列之JUC底層AQSJava程式設計AQS
- 介面高併發壓測入門實戰
- 06.OpenFeign介面呼叫
- 前端如何取消介面呼叫前端
- Http介面呼叫示例教程HTTP
- 前端的初步----呼叫介面前端
- C++呼叫C介面C++
- RPC呼叫介面設計RPC
- 實現呼叫API介面API
- Java併發程式設計序列之執行緒狀態Java程式設計執行緒
- jmeter介面效能測試-高併發分散式部署JMeter分散式
- 資料庫併發如何讓資料操作序列化資料庫
- PHP 以 SOAP 方式呼叫介面PHP
- Django呼叫支付寶支付介面Django
- 支付寶介面呼叫 -- JAVA版Java
- 記 Laravel 呼叫 Gin 介面呼叫 formData 上傳檔案LaravelORM
- 洛谷 P10512 序列合併
- 併發程式設計之:非同步呼叫獲取返回值程式設計非同步
- 一勞永逸的優化!併發RPC呼叫小工具優化RPC
- 高併發環境下生成序列編碼重複問題分析
- 【OS】同步非同步/阻塞非阻塞、併發並行序列的區分非同步並行
- 高併發下的介面冪等性解決方案!
- 【肥朝】你的介面,真的能承受高併發嗎?
- 高併發下如何保證介面的冪等性?
- 呼叫java介面的方式有哪些?Java
- 免費呼叫微信推送介面
- 呼叫api介面有什麼用?API