将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 调用,区分哪个抛出错误,只拒绝一个