ホームページ > 記事 > ウェブフロントエンド > d3.json() コールバック内のコードが D3 v5 で実行されないのはなぜですか?
D3 v5 では、d3.json() コールバック内のコードが実行に失敗し、開発者は困惑しています。この不一致は、D3 v4 以降の d3.json() の署名の大幅な変更により発生しました。
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.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 サイトの他の関連記事を参照してください。