繁体   English   中英

返回承诺而不是异步

[英]Return Promises instead of Async

我想返回看起来像这样的数据

[
  shops: {
    id,
    products:[{Object}, {Object}]
  },
  shops: {
    id,
    products:[{Object}, {Object}]
  } 
]

因此,我有一些商店ID的清单,我需要在这些清单上进行迭代并获取每个商店的产品并将其附加并返回。

我就是这样

const shops = response.data
const respToSend = []
async.eachSeries(shops, (shop, callback) => {
  const id = shop.shop_id
  const shopObj = {
    id
  }

  // Fetch products of each Shop.
  getProductList(id)
    .then((responseData) => {
      shopObj.products = responseData.data.products
      respToSend.push(shopObj)
      callback()
    })
    .catch(() => {
    })
}, () => {
  return respToSend
})

如您所见,我正在使用异步节点模块来执行异步任务,但是应用程序要求我以Promises的形式返回响应,然后将其解决,否则将输出null。 如何使用诺言实现这一目标? 我是新来的诺言,对于任何错别字都很抱歉。

尝试Promise.all(iterable)

Promise.all(shops.map(shop => getProductList(shop.shop_id)
    .then(products => ({id: shop.shop_id, products}))
    .then(/* actions for each shop */))
  .then(shops => {
    /* actions for array of shop objects */
    respToSend = shops;
  })

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM