gpt4 book ai didi

javascript - Nodejs 中用于递归获取 promise 的异步生成器

转载 作者:行者123 更新时间:2023-11-29 23:11:02 36 4
gpt4 key购买 nike

我正在尝试递归扫描 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))

最佳答案

使用 for await … of loop :

async function processor() {
const result = [];
for await (const val of promiseGen()) {
result.push(await promise2(val))
}
return result;
}

关于javascript - Nodejs 中用于递归获取 promise 的异步生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53851678/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com