@@ -84,6 +84,7 @@ export default function TaskDetailPage() {
8484 const taskManager = React . useRef < TaskWebSocketManager | null > ( null )
8585 const connectedRef = React . useRef ( false )
8686 const timeoutRef = React . useRef < ReturnType < typeof setTimeout > | null > ( null )
87+ const cancelledRef = React . useRef ( false )
8788 const planVersionRef = React . useRef < number | undefined > ( undefined )
8889 const availableCommandsVersionRef = React . useRef < number | undefined > ( undefined )
8990 const fileChangesVersionRef = React . useRef < number | undefined > ( undefined )
@@ -124,7 +125,7 @@ export default function TaskDetailPage() {
124125 await apiRequest ( "v1UsersTasksDetail" , { } , [ taskId ] , ( resp ) => {
125126 if ( resp . code === 0 ) {
126127 result = resp . data
127- setTask ( resp . data )
128+ if ( ! cancelledRef . current ) setTask ( resp . data )
128129 } else {
129130 toast . error ( resp . message || "获取任务详情失败" )
130131 }
@@ -134,6 +135,7 @@ export default function TaskDetailPage() {
134135
135136 const scheduleFetchTaskDetail = React . useCallback ( async ( ) => {
136137 const currentTask = await fetchTaskDetail ( )
138+ if ( cancelledRef . current ) return
137139 const vmStatus = currentTask ?. virtualmachine ?. status
138140 let delay = 1000
139141 switch ( vmStatus ) {
@@ -204,8 +206,10 @@ export default function TaskDetailPage() {
204206 // 定时获取任务详情
205207 React . useEffect ( ( ) => {
206208 if ( ! taskId ) return
209+ cancelledRef . current = false
207210 scheduleFetchTaskDetail ( )
208211 return ( ) => {
212+ cancelledRef . current = true
209213 if ( timeoutRef . current ) {
210214 clearTimeout ( timeoutRef . current )
211215 timeoutRef . current = null
0 commit comments