我正在尝试在map函数中执行多个get请求,但是我收到了'捕获到未处理的诺言拒绝,它带有“ TypeError:无法读取未定义的属性'trackItems'” ”。
波纹管功能基本上是接收响应作为参数,并建立一个对象以保存其内容。最后,我得到的对象具有预期的id,名称和类型,但是 trackItems数组始终为空。我确信我从getPlaylistTracks函数中获得的信息是正确的,并且无法理解为什么它无法正常工作。
此外,我在getPlaylistTracks上使用 requestPromiseNative 进行请求并使用了await,而我的homeContentItems全局变量具有以下类型的结构:
私有静态 homeContentItems :任意= {项目:[{内容:{项目:[]}}]]};
这是saveContent函数:
private saveContent(homeItemsResponse: any): any {
try {
if (homeItemsResponse && homeItemsResponse !== undefined) {
homeItemsResponse.map((playlistCategoriesItem: any, i: number) => {
const homeContent: any = Home.homeContentItems.items[0].content.items;
homeContent.push({ name: playlistCategoriesItem.name, content: { items: [] } });
const playlistContent: any = playlistCategoriesItem.content.items;
playlistContent.map(async (playlistItem: any) => {
const homePlaylistItems: any = Home.homeContentItems.items[0].content.items[i].content.items;
homePlaylistItems.push({
id: playlistItem.id,
name: playlistItem.name,
type: playlistItem.type,
trackItems: [],
});
const playlistId: string = playlistItem.id;
const response: any = await this.getPlaylistTracks(playlistId);
response.items.map(async (item: any) => {
homePlaylistItems.trackItems.push(item);
});
});
});
}
} catch (error) {
this.logger.info(`@@@@ Home - Error on saveHomeContent: ${error}`);
}
}
预先感谢您:)
答案 0 :(得分:0)
改为使用for循环。这样SelectListItem
将按预期工作。
也不要忘记将public List<SelectListItem> Ratings { get; set; }
函数设为await
。
saveContent