Javascript 检查是否使用wait调用js函数?

Javascript 检查是否使用wait调用js函数?,javascript,async-await,Javascript,Async Await,我有一个checkPermission功能,在该功能中,我拉会话,访问数据库并确认权限。如果不允许该操作,函数将抛出 await checkPermission("USER_READ"); // This will throw if not permitted. // Do permission specific stuff. 问题是,若我忘记了等待,它将不会等待并移动到未经许可的代码。如果使用了await,我可以通过编程方式签入checkPermission函数吗?如果未

我有一个
checkPermission
功能,在该功能中,我拉会话,访问数据库并确认权限。如果不允许该操作,函数将抛出

await checkPermission("USER_READ"); // This will throw if not permitted.
// Do permission specific stuff.
问题是,若我忘记了等待,它将不会等待并移动到未经许可的代码。如果使用了
await
,我可以通过编程方式签入
checkPermission
函数吗?如果未使用
await
,我可以抛出该函数吗?或者有没有其他方法可以对给定的函数强制执行
wait
,如果不使用则抛出


注意:我知道我可以把它放在if中,然后检查它是否返回
Promise
。但这不是我要问的。

通过使用eslint并将其作为CI管道的一部分添加,您可以轻松完成这一任务

不允许没有等待表达式的异步函数 (需要等待)


解决这个问题的最好方法是使用一个过梁,如果由于某种原因不能,可以执行运行时检查
。然后确实调用了
,如果没有调用,则记录警告或其他内容

const mustCallThen=fn=>(…args)=>{
常量超时=设置超时(()=>{
console.warn(fn,'.then未调用')
})
const then=(解析、拒绝)=>{
clearTimeout(超时)
返回fn(…参数)。然后(解析、拒绝)
}
返回{then,catch:reject=>then(null,reject)}
}
异步函数检查权限(权限){
//一些异步代码
返回真值
}
//用法示例:
const yo=mustCallThen(checkPermission)
//yo现在是相同的函数,但如果在以下情况下没有立即调用,则会警告您
yo()
//将记录:
//异步函数checkPermission(permission)。然后未调用
wait yo()//将不记录

使用一根短绒。没有办法“强制”等待承诺,这根本不受其设计方式的支持。检查此项我知道这不会回答您的问题,但:使用“默认拒绝”权限检查是否比依赖抛出的错误更好?在我看来,授予的权限越少越好。不,忘记
wait
就像忘记了整个检查,您所能做的就是记住执行它。或者,您可以返回包含受限api的对象,因此您需要等待该对象继续。
   eslint require-await: "error"