0

获取一个 ID 的输入数组,在每个项目上,我必须按顺序执行一个提取请求,然后使用返回的结果执行数据库操作。

ID = [1,2,3,4]

我有两个选择,

  1. 使用 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))
  1. 在移动到下一个 ID 之前,使用 reducer 对每个 ID 执行 fetch 调用和数据库操作。
    return files.reduce((chain,currentFile) => {
            return chain.then(_ => download(currentFile));
                },Promise.resolve())
                }
reductiveDownloadChain(mockFiles)

这些方法之一是更好的选择吗?我怎么知道该选哪个?

4

0 回答 0