【发布时间】:2021-10-05 07:58:50
【问题描述】:
我在一个数组中有数千个文本对象。 我想将每个文本发送到 API 并将结果保存到一个集合中,并在成功结果时更新另一个集合。
这是我的实现,
let arr = [
{
textId: "123",
text: "This is stackoverflow"
},
{
textId: "678",
text: "I love stackoverflow"
}
];
let textIds = [];
for(let i=0;i<arr.length;i++){
const result = await axios.post("API", {text:arr[i].text});
if(result && result.status === 200){
await db.collections("solutions").insertOne({...arr[i], result});
textIds.push(arr[i].textId);
}
}
await db.collections("texts").updateMany({textId:{"$in":textIds}},{"$set":{solutionFlag: true}});
当我迭代 10k、20k 文本时,这会导致性能不佳。 10k 条文本大约需要 1 小时。
如何优化此代码。
worker_threads 会在这里工作吗?
谢谢:)
【问题讨论】:
标签: javascript node.js multithreading performance worker