调用async函数时使用await报错‘await is only valid in async function’的原因
解决 "await is only valid in async function" 错误
兄弟,这个报错的原因特别直接——你在start函数里用了await,但start本身并没有被标记为async函数呀!
await的使用规则很明确:它只能在async函数内部运行,不管这个函数是表达式形式还是声明形式。你现在的start是个普通同步函数,突然在里面用await,JS引擎肯定会抛出错误。
修复方法超简单
只需要把start函数改成async函数就行,两种写法都可以:
写法一:函数表达式加async
var start = async function(a,b){ // ... 你的其他业务代码 const result = await helper.myfunction('test','test'); }
写法二:箭头函数版本(如果偏好这种风格)
const start = async (a,b) => { // ... 你的其他业务代码 const result = await helper.myfunction('test','test'); }
改完之后,start就变成了异步函数,里面的await就能正常工作,等待myfunction这个异步操作完成后再继续执行后续逻辑。
额外提一句:当你调用start的时候,它会返回一个Promise,如果需要处理它的执行结果或者捕获可能的错误,记得用.then()/.catch()链式调用,或者在另一个async函数里用await来调用它哦。
内容的提问来源于stack exchange,提问作者j.doe
相关产品推荐
相关产品推荐

