Я пытаюсь рекурсивно сканировать таблицу MySQL и обрабатывать строки в пакетном режиме.ids
эквивалентно массиву строк, а promise1
извлекает кусок строк и promise2
обрабатывает их.Это то, что я реализовал до сих пор.Это работает, как ожидалось.Как я могу улучшить это, чтобы упростить дальнейшее?
const ids=[]
for(let i=0;i<50;i++){
ids.push(i)
}
const promise1=(limit,after=-1)=>new Promise(r=>setTimeout(()=>r(ids.slice(after+1,after+limit+1)),1000))
const promise2=a=>new Promise(r=>setTimeout(()=>r(a.map(b=>b*2)),1000))
async function* promiseGen(){
let limit=10
let after=-1
while(true){
let pr1=await promise1(limit,after)
if(pr1.length==0){
break
}
yield pr1
console.log(pr1)
after=pr1[pr1.length-1]
}
}
async function processor(){
let pr1=promiseGen()
let result=[]
while(true){
let data=await pr1.next()
if(data.done){
break
}
let res=await promise2(data.value)
result.push(res)
}
return result
}
processor().then(res=>console.log(res))