获取一个 ID 的输入数组,在每个项目上,我必须按顺序执行一个提取请求,然后使用返回的结果执行数据库操作。
ID = [1,2,3,4]
我有两个选择,
- 使用 Promise.all,我预先执行所有 fetch 调用并将结果推送到数组。然后,一旦进行了所有调用,我就获取这个结果数组并循环遍历它以对每个结果执行我的 DB 操作。
let requests = ids.map(id => {
return new Promise((resolve, reject) => {
request({
uri: <API url>+‘?id=' + id,
method: ‘GET’
},
(err, res, body) => {
if (err) { reject(err) }
resolve(body)
})
})
})
Promise.all(requests).then((body) => {
body.forEach(res => {
if (res)
productsToReturn.push(JSON.parse(res).productInfo)
})
}).catch(err => console.log(err))
- 在移动到下一个 ID 之前,使用 reducer 对每个 ID 执行 fetch 调用和数据库操作。
return files.reduce((chain,currentFile) => {
return chain.then(_ => download(currentFile));
},Promise.resolve())
}
reductiveDownloadChain(mockFiles)
这些方法之一是更好的选择吗?我怎么知道该选哪个?