在D3 v5 中,d3.json() 回呼中的程式碼無法執行,讓開發人員感到無法執行,讓開發人員感到困惑。這種差異的出現是由於 D3 v4 以來 d3.json() 的簽名發生了重大變化。
D3 v5 已經放棄了 XMLHttpRequest 並採用了 Fetch API,有利於承諾管理非同步請求。因此,d3.json() 的第二個參數不再是負責處理請求的回呼。相反,它充當可選的 RequestInit 物件。因此,d3.json() 現在傳回一個可以使用其 .then() 方法操作的 Promise。
要解決此問題,您的程式碼應修改如下:
d3.json("/trip_animate/tripData.geojson") .then(function(data){ // Code from your callback goes here... });
D3 v5 中的錯誤處理也發生了變化。在早期版本中,錯誤是透過傳遞給 d3.json() 的回呼的第一個參數來報告的。然而,在D3 v5中,如果發生錯誤,d3.json()返回的Promise將被拒絕。這使得可以使用普通的JS 錯誤處理機制:
使用拒絕處理程序作為.then() 的第二個參數
d3.json("/trip_animate/tripData.geojson") .then(function(data) { // Code from your callback goes here... }, function(error) { // Error handling code here... });
使用.catch( ) 處理拒絕
d3.json("/trip_animate/tripData.geojson") .then(function(data) { // Code from your callback goes here... }) .catch(function(error) { // Error handling code here... });
以上是為什麼我的 d3.json() 回呼中的程式碼未在 D3 v5 中執行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!