【发布时间】:2020-09-12 13:14:14
【问题描述】:
我有超过 100 个项目的数组。每个项目都点击一个网址。从项目的特定 url 获得响应后,我会在数据库中插入选项。
如果我使用异步等待,那么我必须等到 100 个项目得到处理。但是如果我做异步,那么我会得到响应,但是作为异步行为,数据库中的数据将不可见,直到所有进程都完成。
示例 1:使用异步等待
var loc = async(locations){
return new Promise((resolve,reject) => {
try{
for(let item of locations){
var response = await html(location.url);
await insertDB(response);
}
}catch(e){
console.log('error : ',e);
}
resolve('All operation completed successfully');
})
}
位置(位置);
locations 是项目数组 只有当所有请求都完成时,我才会得到响应。
示例 2:异步
var loc = (locations){
return new Promise((resolve,reject) => {
locations.forEach(location => {
html(location.url,(res) => {
insertDB(response,(rows) => {
});
});
})
resolve('All operation completed successfully');
})
}
位置(位置)
这里我会立即得到响应,但是点击和插入的过程将在后台处理。
考虑示例1,我们是否可以将循环请求分成子进程,以便在nodejs或其他任何方式中快速执行?
【问题讨论】:
标签: node.js