【发布时间】:2017-03-11 22:42:52
【问题描述】:
下面是我获取商店列表然后是产品的代码
现在的问题是,返回商店产品列表的 API 有一个速率限制器,即 10req/秒。因此,如果获得超过 10 家商店并且我点击产品,API 开始给我 503,并且在响应中我得到未定义的值以及实际值。有没有办法可以设置超时,即在我的情况下延迟getProductList 的调用?
下面是代码
const shops = response.data
return Promise.all(
shops.map((shop) => {
const id = shop.shop_id
const shopobj = {
id,
name: shop.shop_name,
}
return favAPI.checkFavourite(uid, id)
.then((favData) => {
shopobj.is_fave_shop = favData
// Fetch the products of shop
return getProductList(id, uid)
.then((responsedata) => {
shopobj.products = responsedata.data.products.map(product => ({
id: product.id,
name: product.name,
}))
return shopobj
})
.catch(() => { })
})
.catch(err => console.error(err))
}))
.then(responses => responses)
.catch(err => console.log(err))
我可以这样做
return setTimeout(() => getProductList(id, uid)
.then((responsedata) => {
shopobj.products = responsedata.data.products.map(product => ({
id: product.id,
name: product.name,
price: product.price,
image_url: product.image_url,
is_wishlist: userWishListProd.indexOf(product.id) > -1,
url: product.url,
shop_name: product.shop.name,
labels: product.labels,
badges: product.badges,
}))
return shopobj
})
.catch((err) => { console.error(err.name, err.statusCode, err.message) }), 30)
【问题讨论】:
标签: javascript node.js promise bluebird