ホームページ  >  記事  >  ウェブフロントエンド  >  d3.json() コールバック内のコードが D3 v5 で実行されないのはなぜですか?

d3.json() コールバック内のコードが D3 v5 で実行されないのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-30 13:54:03325ブラウズ

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

d3.json() コールバック内のコード実行の中断

D3 v5 では、d3.json() コールバック内のコードが実行に失敗し、開発者は困惑しています。この不一致は、D3 v4 以降の d3.json() の署名の大幅な変更により発生しました。

D3 v5 の Promises への移行

D3 v5 では、XMLHttpRequest を放棄し、Fetch API を採用しました。非同期リクエストを管理することを約束します。その結果、d3.json() の 2 番目の引数は、リクエストの処理を担当するコールバックではなくなりました。代わりに、オプションの RequestInit オブジェクトとして機能します。その結果、d3.json() は .then() メソッドを使用して操作できる Promise を返すようになりました。

非同期リクエストを処理するための改訂されたコード

問題を解決するには、コード次のように変更する必要があります:

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

D3 v5 でのエラー処理

D3 v5 ではエラー処理も変更されました。以前のバージョンでは、エラーは d3.json() に渡されるコールバックの最初のパラメーターを通じて報告されました。ただし、D3 v5 では、エラーが発生した場合、d3.json() によって返される Promise は拒否されます。これにより、バニラ JS エラー処理メカニズムの使用が有効になります。

.then() の 2 番目の引数として拒否ハンドラーを使用する

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。