【发布时间】:2018-04-04 18:24:19
【问题描述】:
给定异步代码
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关键字的情况下调用它?
【问题讨论】:
-
我的意思是……你这样做有什么好处?你没有利用这样做给你的任何东西。为什么它首先是异步的?
-
如果该函数需要对数据库进行多次修改,而用户无需等待。它的步骤、完成和错误都记录在数据库中,用户可以查看访问其他网页的过程。
-
在这种情况下添加异步仍然不会改变任何东西。将创建并返回一个 Promise,然后在未使用后收集垃圾。
async的函数不会使其更快或更慢,也不会对使用它的代码产生任何影响。这完全没有意义。 -
这不是没有意义的。调用函数将运行完成,无需等待
weirdFunction调用。如果调用函数必须作为框架中与 UI 相关的 init 函数完成,这可能会产生或破坏响应性。也许您真的不在乎 何时wierdFunction完成,因为它会加载数据并更新 DOM 而没有其他依赖于它。您应该在任务中添加一个捕获,以避免未处理的拒绝。见Bob Kerns answer。
标签: javascript node.js async-await