在我的 HTML5 Web Audio API 应用程序中,我在后台加载了大量的音频文件,或多或少像这样(没什么特别的):
GET(
sound.url,
function(response) {
ctx.decodeAudioData(
response,
function(buffer) {
buffers[sound.url] = buffer;
on_buffer_load(sound.url);
},
function() {
fail(
"failed to decode sound", sound.id,
"from", sound.url
);
}
);
},
function(response, status) {
fail(
"failed to load sound", sound.id,
"from", sound.url,
"response:", status, response
);
},
"arraybuffer"
)
同时,用户可以自由地在 UI 中做一些事情——只要他所做的事情不需要加载声音。
看起来,如果用户confirm()
在加载声音时触发调用,则会decodeAudioData()
跳过一两个回调——对于某些声音,既不会调用成功回调,也不会调用失败回调。
这是可以预料的吗?或者我应该深入挖掘并尝试生成一个最小的示例并提交一个错误?我错过了什么?