vue在元件銷燬的時候將非同步請求撤銷

zheyi420發表於2024-04-01

背景

Vue 2 + ArcGIS JS
載入圖層使用 FeatureLayer.queryFeatures(query) 對服務端執行地理資料查詢請求。
該請求為 fetch 型別。

復現

Bug:剛開啟專題A,未等載入完,點選快速切換到共用同一個地圖的新專題B,地圖卻載入專題A的資料圖層。

原因:由於地圖還是用的同一個物件,且該函式FeatureLayer.queryFeatures(query)非同步執行,當非同步等待完成後,會繼續執行原有的 then() 內容

解決

方法 1. Vue 宣告變數標記元件是否被銷燬

image

方法 2. 使用 AbortController 終止請求

image

參考:

  • FeatureLayer.queryFeatures(query, options)
  • MDN AbortController
  • javascript.info - Fetch:中止(Abort)

相關文章