大家好!我叫戴向天
QQ羣:602504799
QQ:809002582
function asyncFor({data,num,handle}){
return new Promise(function(r,j){
// arr 數據 num 每組數據的個數
function getGroup(arr,num){
let group = []
for(let i=0;i<arr.length;i+=num){
group.push(arr.slice(i, i+num))
}
return group
}
const group = getGroup(data,num)
let resultGroup= new Array(group.length)
let doneNum = 0;
for(let i=0;i < group.length;i++){
setTimeout(function(){
doneNum++
resultGroup[i] = handle?handle(group[i],i*num):group[i]
if(doneNum === group.length){
let result = []
for(let r = 0;r<resultGroup.length;r++){
result = result.concat(resultGroup[r])
}
return r(result)
}
})
}
})
}
// dome 測試
(async function(){
const arr = new Array(10000)
const nowTime = +new Date()
const result = await asyncFor({
data:arr,
num:500,
handle:function(res,index){
for(let i = 0;i < res.length;i++){
res[i] = {
name:'戴向天'+(index+i+1),
}
}
return res;
}
})
console.log('共計花費了:'+ (+new Date() - nowTime)+'ms')
console.log(result)
console.log('開始重新處理結果')
const alignTime = +new Date()
const result2 = await asyncFor({
data:result,
num:500,
handle:function(res,index){
for(let i = 0;i < res.length;i++){
res[i] = {
...res[i],
index:index+i+1
}
}
return res;
}
})
console.log('共計花費了:'+ (+new Date() - alignTime)+'ms')
console.log(result2)
})()