在没有等待的情况下调用异步功能

时间:2018-04-04 18:24:19

标签: javascript node.js async-await

给出带异步的代码

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关键字的情况下调用它?

1 个答案:

答案 0 :(得分:1)

只需从async移除wierdFunction()即可。如果您未使用退回的承诺且未在内部使用await,则没有理由拥有它。它只是为返回创建一个额外的promise对象,然后收集垃圾,因此它会产生额外的开销,并且它向调用者暗示调用者可以将该promise用于有用的事情。

  

有没有建议不要在没有await关键字的情况下调用它?

如果你的手术是真的"火灾和忘记"并且您不关心完成或报告错误,那么它不需要返回一个承诺,您只需将其作为启动异步操作的正常功能,但不会报告任何结果。