给出带异步的代码
async function wierdFunction(){
setTimeout(function(){
//background process that does not return
//Russian roulette
if ( Math.random() > 0.99 )
throw new Error('Bang!');
}, 3000);
}
我只需要异步调用此函数,我不需要知道它何时完成。
app.post('/wierd-endpoint', function (req,res){
wierdFunction();
res.json({status:"Running. Now, go away."});
});
是否有任何建议禁止在没有await
关键字的情况下调用它?
答案 0 :(得分:1)
只需从async
移除wierdFunction()
即可。如果您未使用退回的承诺且未在内部使用await
,则没有理由拥有它。它只是为返回创建一个额外的promise
对象,然后收集垃圾,因此它会产生额外的开销,并且它向调用者暗示调用者可以将该promise用于有用的事情。
有没有建议不要在没有await关键字的情况下调用它?
如果你的手术是真的"火灾和忘记"并且您不关心完成或报告错误,那么它不需要返回一个承诺,您只需将其作为启动异步操作的正常功能,但不会报告任何结果。