@@ -72,9 +72,10 @@ function HomeClient() {
7272 try {
7373 setLoading ( true ) ;
7474
75- // 并行获取热门电影、热门剧集和热门综艺
76- const [ moviesData , tvShowsData , varietyShowsData , bangumiCalendarData ] =
77- await Promise . all ( [
75+ // 并行获取热门电影、热门剧集、热门综艺和番剧日历
76+ // 使用 allSettled 避免单个请求失败导致全部数据为空
77+ const [ moviesRes , tvShowsRes , varietyShowsRes , bangumiRes ] =
78+ await Promise . allSettled ( [
7879 getDoubanCategories ( {
7980 kind : 'movie' ,
8081 category : '热门' ,
@@ -85,19 +86,32 @@ function HomeClient() {
8586 GetBangumiCalendarData ( ) ,
8687 ] ) ;
8788
88- if ( moviesData . code === 200 ) {
89- setHotMovies ( moviesData . list ) ;
89+ if ( moviesRes . status === 'fulfilled' && moviesRes . value . code === 200 ) {
90+ setHotMovies ( moviesRes . value . list ) ;
91+ } else if ( moviesRes . status === 'rejected' ) {
92+ console . error ( '获取热门电影失败:' , moviesRes . reason ) ;
9093 }
9194
92- if ( tvShowsData . code === 200 ) {
93- setHotTvShows ( tvShowsData . list ) ;
95+ if ( tvShowsRes . status === 'fulfilled' && tvShowsRes . value . code === 200 ) {
96+ setHotTvShows ( tvShowsRes . value . list ) ;
97+ } else if ( tvShowsRes . status === 'rejected' ) {
98+ console . error ( '获取热门剧集失败:' , tvShowsRes . reason ) ;
9499 }
95100
96- if ( varietyShowsData . code === 200 ) {
97- setHotVarietyShows ( varietyShowsData . list ) ;
101+ if (
102+ varietyShowsRes . status === 'fulfilled' &&
103+ varietyShowsRes . value . code === 200
104+ ) {
105+ setHotVarietyShows ( varietyShowsRes . value . list ) ;
106+ } else if ( varietyShowsRes . status === 'rejected' ) {
107+ console . error ( '获取热门综艺失败:' , varietyShowsRes . reason ) ;
98108 }
99109
100- setBangumiCalendarData ( bangumiCalendarData ) ;
110+ if ( bangumiRes . status === 'fulfilled' ) {
111+ setBangumiCalendarData ( bangumiRes . value ) ;
112+ } else {
113+ console . error ( '获取番剧日历失败:' , bangumiRes . reason ) ;
114+ }
101115 } catch ( error ) {
102116 console . error ( '获取推荐数据失败:' , error ) ;
103117 } finally {
0 commit comments