将Promise.all与easyPost API一起用于多个跟踪状态请求

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将Promise.all与easyPost API一起用于多个跟踪状态请求相关的知识,希望对你有一定的参考价值。

我需要输出一长串货件及其跟踪状态/跟踪URL。

如果我同步运行,则可能会花费很长时间。因此,如果我异步运行它,它应该会更快,因为所有请求将同时运行,然后在完成所有操作后将所有信息返回到前端。

所以我仍在节点中学习和使用Promise,但是到目前为止,我已经做到了这一点……但是问题是Promise.all似乎从未执行过。所以我不确定我是否在正确地执行Promise函数,还是对easyPost API不了解?

是的,我现在仅使用2个发货ID,但可能会达到100个或更多...

还有一种在检索货件时返回跟踪器元素的方法,这样我就不必为每个货件进行两次呼叫?

var promise = []
promise.push(getShipmentPromise('shp_xxxShipmentId'))
promise.push(getShipmentPromise('shp_xxxShipmentId2'))
Promise.all(promise)
   .then(response => 
      console.log('Sent - ' + req.method + req.originalUrl)
      console.log('promise.all complete.')
      // within an expressjs route
      res.json(batches)
   )
   .catch(err => 
      console.log(err)
   )        

    function getShipmentPromise (shipmentId) 
      return new Promise((resolve, reject) => 
        easyPostAPI.Shipment.retrieve(shipmentId).then(response => 
          console.log(response.created_at)
        )
      )
    
答案

您需要解决或拒绝诺言。


function getShipmentPromise (shipmentId) 
      return new Promise((resolve, reject) => 
        easyPostAPI.Shipment.retrieve(shipmentId).then(response => 
          console.log(response.created_at)
          resolve(response)
        )
      )


以上是关于将Promise.all与easyPost API一起用于多个跟踪状态请求的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Promise.all() 限制为每秒 5 个 Promise?

Promise.all API 调用,区分哪个抛出错误,只拒绝一个

如何将 URL 中的数组作为参数传递给 Promise.all

await 与 Promise.all 结合使用

await 与 Promise.all 结合使用

如何返回 Promise.all 获取 api json 数据?