Race Condition
競態條件 / 競爭條件
01你是不是遇到這個 / THE SYMPTOM
我快速切換分頁、或連點搜尋好幾次,結果畫面顯示的是「比較早送出、但比較晚回來」的那個舊結果,蓋掉了最新的。或是兩個請求同時改同一筆資料,最後存進去的值是錯的。這種「先後順序亂掉」的 bug 不知道怎麼描述。
↑ 如果你點頭了,你要的關鍵字就是 Race Condition。
02這是什麼 / DEFINITION
Race Condition(競態條件)是指程式結果取決於多個非同步操作「誰先誰後完成」,而這個順序不保證固定,導致有時對、有時錯的不穩定 bug。常見於多個 API 請求或多個寫入互相搶資源。
03什麼時候用 / WHEN TO USE
當你發現「快速操作就出錯、慢慢操作就正常」「結果不穩定、重現困難」「舊回應蓋掉新回應」「同時寫入導致資料錯亂」時,這通常就是 race condition,需要用取消舊請求、加鎖、或只認最後一次來解。
04怎麼跟 AI 說 / HOW TO ASK
直接複製這句、貼進 Claude Code / Cursor / Copilot / ChatGPT:
我這個搜尋有 race condition:快速連打時舊的 API 回應會蓋掉新的。幫我用 AbortController 取消前一次還沒回來的請求,或只採用最後一次發出的請求結果。
05常見坑 / WATCH OUT
⚠ 前端最常見的解法是用 AbortController 取消過期請求,或記錄「最新請求 ID」只認最後一個;後端常用的解法則是加鎖或交易(transaction)。問 AI 時要說清楚是前端請求覆蓋,還是後端資料同時寫入,兩者解法不同。
06相關的詞 / RELATED