Javascript 异步函数内部的某些错误不';我不能正常工作

Javascript 异步函数内部的某些错误不';我不能正常工作,javascript,async-await,Javascript,Async Await,我在使用异步函数时遇到了一个问题。我不知道classList.add(“”)是非法的。因此,当我在Firefox中运行代码时,它停止运行我的函数,但没有出现错误,因为它是异步的(Chrome显示了错误)。这很难找到,因为在原始程序中,带有classList.add的函数需要两次函数调用。这是怎么回事?我将来如何避免它(除了必须检查两个不同浏览器中的错误日志)? PS奖金,如果你能解释为什么异步错误实际上没有停止执行 异步函数error1(){ log('Fn异步错误:before') 设a=未

我在使用异步函数时遇到了一个问题。我不知道classList.add(“”)是非法的。因此,当我在Firefox中运行代码时,它停止运行我的函数,但没有出现错误,因为它是异步的(Chrome显示了错误)。这很难找到,因为在原始程序中,带有classList.add的函数需要两次函数调用。这是怎么回事?我将来如何避免它(除了必须检查两个不同浏览器中的错误日志)? PS奖金,如果你能解释为什么异步错误实际上没有停止执行

异步函数error1(){
log('Fn异步错误:before')
设a=未定义
a、 b=1
console.log('after')
}
异步函数error2(){
log('Fn async noError:before')
document.body.classList.add(“”)
console.log('after')
}
函数error3(){
console.log('Fn:before')
document.body.classList.add(“”)
console.log('after')
}
//停止函数的执行,但不停止程序的执行
//在Chrome和Firefox中引发错误
错误1()
//停止函数的执行,但不停止程序的执行
//在Chrome中抛出错误,但在Firefox中没有
错误2()
//错误和停止程序

error3()
您应该等待执行,以便捕获可能的错误。这是因为从
async
块内部创建的承诺的行为应与承诺的行为相同-如果出现任何错误,承诺将解析为
rejected
,并将异常从管道传递到附加到拒绝路径的延续

两种方式:

首先-在您的承诺中添加明确的
,然后添加

异步函数error1(){
log('Fn异步错误:before')
设a=未定义
a、 b=1
console.log('after')
}
error1().catch(e=>{
console.log('error:'+e);

} );为什么异步错误没有真正停止执行您没有等待它可能重复Ok,但为什么Firefox在第二个示例中没有显示错误?同样,在我的原始代码中,我确实有wait,但是如果错误没有像非异步函数那样停止执行,这似乎违反了我的直觉。如果不使用wait,那么不同语句的执行顺序就没有定义。在不使用WAIT的情况下调用异步函数之后的语句将在执行异步函数时甚至之前执行。