中的值爲null我使用的是承諾。這是我的問題的延續herePromise.all
我遇到的問題是作爲響應,即對象數組具有空值。我會盡量解釋這個
- 首先,我獲取用戶標識
- 獲得用戶whishlist產品根據UserID
- 然後使用用戶id我得到商店/店鋪列表
- 然後我遍歷店名單和通話另一個API來檢查這家商店是否是用戶最喜歡的商店。
然後我得到每個商店的產品並追加一個對象並返回。
function getStoresList(context) { const userID = common.getUserID(context) let userWishListProd = [] return userID .then(uid => Wishlist.getUserWishlistProducts(uid).then((products) => { userWishListProd = products.data.map(product => +product.id) return uid })) .then(uid => api.getOfficialStoresList(uid).then((response) => { if (!response.data) { const raw = JSON.stringify(response) return [] } 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, is_wishlist: userWishListProd.indexOf(product.id) > -1, })) return shopobj }) .catch(() => {}) }) .catch(err => console.error(err)) })) .then(responses => responses) .catch(err => console.log(err)) }) .catch(() => {})) .catch() }
我得到的迴應是
[{
"id": 1001,
"name": "Gaurdian Store",
"is_fave_shop": "0",
"products": [{
"id": 14285912,
"name": "Sofra Cream",
"is_wishlist": false
}]
},
null,
null,
{
"id": 1002,
"name": "decolite",
"is_fave_shop": "1",
"products": [{
"id": 14285912,
"name": "Denca SPF",
"is_wishlist": false
}]
}
]
實際的商店來了爲4,但不是它空被追加。我在這裏用Promises做了什麼錯誤。
'getProductList'調用有時會得到503,我抓住它並因此導致未定義的猜測。 – Mozak
啊,好我的猜測證實:-)還有什麼問題嗎?如果沒有,請接受答案。 – Bergi