如何决定某个函数实现是同步还是异步?
发布于 12 年前 作者 lhfcws 9349 次浏览 最后一次编辑是 8 年前

比如我可能一个模块里的某个函数不涉及IO或DB等,仅是简单的handler,感觉其实采取同步会方便很多,但是又怕整体调用风格不统一很混乱。请问各路大神一般是怎么决定的?是所有功能都异步?还是涉及到阻塞的和exports的才采取异步?

8 回复

涉及IO的都是异步,明显特征是有Callback和触发条件 另外一种是你让node异步,比如SetTimeXXX的,建议到图灵买那本异步的书看看,获益不少 异步编程确实需要习惯啊啊啊啊啊

没必要吧,不是说非要所有情况都异步,能同步处理的就同步处理!同步代码还是比异步代码易读很多的,捕捉异常也容易些。

异步的方法不是问题,就是不太好确定什么时候可以使用同步。。

也就是说大神你是认为非阻塞类的可以同步就同步吗?

@Lhfcws 能同步的地方就用同步了。不过就如楼上所说一样,想用nodejs,首先要熟练异步编程,毕竟单线程语言这是不可避免的。而且当你熟练后,异步用起来也很爽。

@halfblood 多谢了!其实我主要是不知道哪种设计会更好,要考虑到拓展复用,性能等方面。

如果这个同步是偶尔触发的(比如达到某一条件) 这样的同步对性能没什么影响,反而可以大大减轻代码压力

如果每次请求都要触发,这样的操作就不要用同步

受教!

回到顶部