feat: 优化用户数据加载逻辑和错误处理

This commit is contained in:
alger
2025-03-22 10:31:05 +08:00
parent b114cf4a33
commit f9fd9afcdd

View File

@@ -167,29 +167,36 @@ const loadData = async () => {
try {
infoLoading.value = true;
if (!user.value) return;
if (!user.value) {
console.warn('用户数据不存在,尝试重新获取');
// 可以尝试重新获取用户数据
return;
}
const { data: userData } = await getUserDetail(user.value.userId);
if (!mounted.value) return;
userDetail.value = userData;
// 使用 Promise.all 并行请求提高效率
const [userDetailRes, playlistRes, recordRes] = await Promise.all([
getUserDetail(user.value.userId),
getUserPlaylist(user.value.userId),
getUserRecord(user.value.userId)
]);
const { data: playlistData } = await getUserPlaylist(user.value.userId);
if (!mounted.value) return;
playList.value = playlistData.playlist;
const { data: recordData } = await getUserRecord(user.value.userId);
if (!mounted.value) return;
recordList.value = recordData.allData.map((item: any) => ({
userDetail.value = userDetailRes.data;
playList.value = playlistRes.data.playlist;
recordList.value = recordRes.data.allData.map((item: any) => ({
...item,
...item.song,
picUrl: item.song.al.picUrl
}));
} catch (error: any) {
console.error('加载用户页面失败:', error);
// 如果获取用户数据失败可能是token过期
if (error.response?.status === 401) {
userStore.handleLogout();
router.push('/login');
} else {
// 添加更多错误处理和重试逻辑
message.error(t('user.message.loadFailed'));
}
} finally {
if (mounted.value) {
@@ -223,7 +230,7 @@ watch(
// 页面挂载时检查登录状态
onMounted(() => {
checkLoginStatus();
checkLoginStatus() && loadData();
});
// 展示歌单