太多的callback问题

我知道在nodejs中推荐编写asynchronous函数。 但是,我觉得不需要asynchronous地写一些非IO事件。 我的代码可能不太方便。 例如:

//sync function now(){ return new Date().getTime(); } console.log(now()); //async function now(callback){ callback(new Date().getTime()); } now(function(time){ console.log(time); }); 

在这种情况下sync方法块CPU吗? 这是非常了不起的,我应该使用async呢?

如果被调用的方法可能会阻塞等待IO的很长时间,则需要asynchronous样式。 由于node.js事件循环是单线程的,因此您希望在IO期间生成事件循环。 如果你没有这样做,那么在每个时间点只能有一个未完成的IO。 这将导致完全不可扩展性。

为CPU工作使用callback完成任何事情。 它不会解锁事件循环。 事实上,对于CPU工作,不可能解除事件循环。 CPU必须占用一定的时间,这是不可避免的。 (无视networking工作者在这里)。

callback是没有用的。 你必须使用它们。 它们是node.js事件循环IO模型的必要结果。

也就是说,如果您以后计划将IO引入now ,即使不是绝对必要的,您也可能会急于使用callback风格。 以后从同步调用改为基于callback的调用可能会很费时,因为callback风格是病毒式的。

通过给函数的签名添加一个callback函数,代码就会传递这个函数中可能发生的asynchronous事件,函数会调用带有错误和/或结果对象的callback函数。

如果函数不执行asynchronous操作,也不涉及可能发生(非编程)错误的情况,则不要使用callback函数签名,而只是返回计算结果。

带callback的函数不方便处理,所以要避免callback,直到你真的需要它们。