前提・実現したいこと
javascriptで音声を鳴らすためにWEBAudioAPIを利用しました。
Soundクラスで非同期に読み込み、失敗した場合、コールバックにerror!を渡すことで
エラーを検知し、指定のメッセージを表示します。
###エラー
その場合、コールバックの中のif文でerror!が渡されたかどうか判断しメッセージを表示しますが
1つ外の consolelog("????"); の位置に、このようなエラーを出すような文を書いた場合でも
指定のエラーメッセージが表示されます。
音声データをロードできたかを検知するためのメッセージに、その他の部分のエラーが引っかかるのは何故なのでしょうか。
//htmlのボタンのクリックを検知 window.addEventListener('load', () => { let button = document.body.querySelector('#start_button'); button.addEventListener('click', () => { sound = new Sound(); sound.load('./xxx.mp3', (error) => { if (error != null) { alert('ファイルの読み込みエラーです'); return; } //意図的に設置したエラー consolelog("????"); } ) }) }) class Sound { constructor() { this.ctx = new AudioContext(); } load(audioPath, callback) { fetch(audioPath) .then((response) => { return response.arrayBuffer(); }) .then((buffer) => { return this.ctx.decodeAudioData(buffer); }) .then((decodeAudio) => { this.source = decodeAudio; callback(); }) //ロードに失敗した場合 .catch(() => { callback('error!'); }); } }
試したこと
エラーを取り除けばもちろん正常に動作しましたし、音声データをロードできなかった場合も検知できました。
###補足
vscodeでgo liveを利用してテストしました。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。