Skip to content

为什么开发zco?

Jason edited this page Jun 27, 2017 · 5 revisions

今年3月份准备将手里的两个大型java爬虫重构成node.js版本,前期考虑过用co ,但co是依赖promise的,而promise算是旧时代的产物了。另外Promise是相对于callback的一大进步,缓解了callback带来的代码结构问题(深层回调嵌套),但其本身.then .then的方式并不是好的实践(每个then方法里面的function之间是相互隔离的,不能在某一个then那儿直接return退出等问题)。

co 可以使我们以同步的方式书写异步代码,这是代码结构的进一步进化,可读性,可维护性大大提高,但为了用它,需要将原本是callback形式的API包装成Promise。co依赖Promise是没有必要的!

个人非常崇拜TJ大神,TJ 的co 是这类模块的先驱,zco也是受其启发编写的,只是设计理念,取舍不一而已,大家选择自己觉得好用的就行:)

还有一个小插曲,当年刚毕业去eleme面试,sofish问如何处理异步,我说用Promise,他说Promise性能不好。当时觉得Promise是很神奇的事情,es6的标准,应该没问题, 从不曾想过performance,所以从那以后,不是不得已,很少使用Promise。

zco设计的最初理念是去掉Promise,可以和callback形式的API无缝使用,后来陆续加入了defer,调用栈跟踪,coroutine local storage等功能。

Clone this wiki locally