0

所以,我正在使用 Javascript 中的 Web Audio API。我目前拥有的看起来像这样

try {
this.processor=this.context.createScriptProcessor(this.blockLength,2,2);
}
catch(f)
{
    this.processor=this.context.createJavaScriptNode(this.blockLength,2,2)
}

基本上,如果第一个失败,请尝试另一个。我不太喜欢这种结构。而且我认为这不是 try/catch 结构的样子。但它完成了这项工作。

有人有更好的方法吗?所以,万一这两个语句都失败了,我可以给出一个 alert() 命令。

谢谢。

PS。我是 JS 新手

4

2 回答 2

3

您可以在调用它之前测试该方法是否存在:

if(this.context.createScriptProcessor){
  this.processor=this.context.createScriptProcessor(this.blockLength,2,2);
}
else if(this.context.createJavaScriptNode){
  this.processor=this.context.createJavaScriptNode(this.blockLength,2,2);
}
else{
  // do something else
}
于 2013-07-02T12:51:34.390 回答
0

这里没有多少 JavaScript 大师,但我会试一试。也许您可以使用布尔值检查您的 try/catch 语句是否有效:

var  isProcessed = false;
try {
    isProcessed = true;
    this.processor=this.context.createScriptProcessor(this.blockLength,2,2);
}catch(f){
    isProcessed = true;
    this.processor=this.context.createJavaScriptNode(this.blockLength,2,2)
}

if(isProcessed == false){
    alert("Not processed!");
}

这对你有用吗?

于 2013-07-02T12:40:52.330 回答