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

Linda Hamilton
Lepaskan: 2024-10-30 13:54:03
asal
324 orang telah melayarinya

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...
  });
Salin selepas log masuk

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...
  });
Salin selepas log masuk

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...
  });
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!