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

Linda Hamilton
リリース: 2024-10-30 13:54:03
オリジナル
324 人が閲覧しました

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!