Rumah  >  Artikel  >  hujung hadapan web  >  Mengapa Kod Saya Dalam Panggilan Balik d3.json() Tidak Dilaksanakan dalam D3 v5?

Mengapa Kod Saya Dalam Panggilan Balik d3.json() Tidak Dilaksanakan dalam D3 v5?

Linda Hamilton
Linda Hamiltonasal
2024-10-30 13:54:03324semak imbas

Why Is My Code Within the d3.json() Callback Not Executing in D3 v5?

Gangguan Pelaksanaan Kod dalam Panggilan Balik d3.json()

Dalam D3 v5, kod dalam panggilan balik d3.json() gagal dilaksanakan, menyebabkan pembangun bingung. Percanggahan ini telah muncul disebabkan oleh perubahan ketara dalam tandatangan d3.json() sejak D3 v4.

Migration to Promises in D3 v5

D3 v5 telah meninggalkanXMLHttpRequest dan menggunakan API Fetch, memilih Berjanji untuk mengurus permintaan tak segerak. Akibatnya, hujah kedua kepada d3.json() bukan lagi panggilan balik yang bertanggungjawab untuk mengendalikan permintaan. Sebaliknya, ia berfungsi sebagai objek RequestInit pilihan. Akibatnya, d3.json() kini mengembalikan Promise yang boleh dimanipulasi menggunakan kaedah .then()nya.

Kod Disemak untuk Mengendalikan Permintaan Tak Segerak

Untuk menyelesaikan isu, kod anda hendaklah diubah suai seperti berikut:

d3.json("/trip_animate/tripData.geojson")
  .then(function(data){
    // Code from your callback goes here...
  });

Pengendalian Ralat dalam D3 v5

Pengendalian ralat juga telah mengalami perubahan dalam D3 v5. Dalam versi terdahulu, ralat telah dilaporkan melalui parameter pertama panggilan balik yang dihantar kepada d3.json(). Walau bagaimanapun, dalam D3 v5, Janji yang dikembalikan oleh d3.json() akan ditolak jika ralat berlaku. Ini membolehkan penggunaan mekanisme pengendalian ralat JS vanilla:

Menggunakan Pengendali Penolakan sebagai Argumen Kedua untuk .then()

d3.json("/trip_animate/tripData.geojson")
  .then(function(data) {
    // Code from your callback goes here...
  }, function(error) {
    // Error handling code here...
  });

Menggunakan .catch( ) untuk Mengendalikan Penolakan

d3.json("/trip_animate/tripData.geojson")
  .then(function(data) {
    // Code from your callback goes here...
  })
  .catch(function(error) {
    // Error handling code here...
  });

Atas ialah kandungan terperinci Mengapa Kod Saya Dalam Panggilan Balik d3.json() Tidak Dilaksanakan dalam D3 v5?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn