我将在React Native中制作应用程序。我需要从一个URL获取类别数据数组,然后对于每个类别,我需要从它们各自的URL获取资源。
我的数据以以下格式存储:
来自mainURL
:
{
"id": 1,
"name": "Home",
"type": "",
"url": "",
"subCategories": [
{
"id": 92,
"name": "Documentary",
"type": "JTV_LEAF",
"url": "yyy",
}
]
}
从每个类别的URL中,
[
{
"id": "1",
"title": "Inception",
"type": "vod"
}
]
我该如何使用
map
、reduce
和axios
获取每个类别的数据?
这是我目前写的代码。最后我得到了
undefined
。export const fetchNavigationFeed = (navUrl, subId) => {
return dispatch => {
const url = navUrl
.replace("__JTV__SUBSCRIBER__ID__", subId);
dispatch({ type:FETCH_NAVIGATION_FEED });
return axios.get(url)
.then(response => {
let categories = [];
for (var i = 0; i < response.data.subCategories.length; i++) {
var cat = response.data.subCategories[i];
var category = new Category(cat);
categories.push(category);
}
console.log(categories);
let promises = [];
categories.map(category => {
let request = axios.get(category.url)
.then(assetsJson => {
let assets = [];
for (var i = 0; i < assetsJson.data.length; i++) {
var ass = assetsJson.data[i];
var asset = new Asset(ass);
assets.push(asset);
}
category.assets = assets;
});
promises.push(request);
});
axios.all(promises)
.then(axios.spread(...args) => {
console.log(args);
});
return categories;
})
.then(categories => {
// console.log(categories);
dispatch({ type:FETCH_NAVIGATION_FEED_SUCCESS, payload:categories });
});
}
}
return fetch(category.url)
; 以及2)分配完资产后将类别返回:.then((assets) => { category.assets = assets; return category });
,以便提供给Promise.all的数组实际上包含这些类别的承诺。 - Shilly