为什么使用JavaScriptcallback,当清洁语法可用?

我正在学习使用Node。 到现在为止还挺好。 但是,对于JavasSript来说,这是一个相当新颖的东西,当清晰,更具可读性(至less对我来说)的语法可用时,我并没有真正使用callback函数。

下面是一个示例代码,使我的观点更清晰:

随着callback:

exports.create = function(req, res){ new Todo({ content : req.body.content, updated_at : Date.now() }).save(function(err, todo, count){ res.redirect('/'); }); }; 

没有callback:

 exports.create = function(req, res){ newtodo = new Todo({ content : req.body.content, updated_at : Date.now() }); newtodo.save(); res.redirect('/'); }; 

这两个代码将保存新的待办事项和redirect。

我倾向于第二个,我发现更容易阅读,但也许有一个区别,我不明白。 有区别吗?

       

网上收集的解决方案 "为什么使用JavaScriptcallback,当清洁语法可用?"

简短的回答是:为了避免locking用户界面,而花费时间的操作正在完成执行。

在第二个例子中,如果save函数调用了ajax,那么你必须做一个同步的ajax调用。

对于第一个,查询完成后,您有机会处理错误。 对于第二个,你会自动假设没有什么不好的事情发生,你的查询总是成功的,用户将总是被redirect到某个地方。

这取决于你的使用情况,如果你不想向用户显示错误,请使用(2),否则请使用(1)。 (2)特别有用,当你只想logging一个事件,发送电子邮件或做的东西,用户(和/或你)甚至不关心,如果失败。 大多数情况下,您需要select(1),因为您需要向最终用户显示某种错误,而不是默默地忽略错误