最近在用NodeJS做一个小的功能,不过发现Node中的IO非阻滞技术给开发带来了很多的麻烦。IO非阻滞本身并没有引入太多的麻烦,只不过因为自己用惯了阻滞思维,一时调整不过来自己的思维惯性,因而引发出不少的问题。
很多时候改一下自己的思维方式,非阻滞技术带来的优越性也就体现出来并且可以毫无困难的继续将项目进行下去了,不过调整自己的思维习惯也不是很容易的,你必须无时无刻不在脑子里警醒着自己:我即将进行的操作,如果是异步运行的,将会怎样?这样时刻警醒自己还是比较困难的。
小的项目中有两个地方用到了IO,分别是遍历磁盘文件(读出文件,并且对文件进行分析);写入MySQL(将分析结果写入数据库);虽然这个功能已经完成了,不过考虑到今后不定什么时候还会遇到,所以我还是将代码整理一下,以备后用。
下面是第一个部分:遍历磁盘目录、找出所有文件,我在整理代码的时候发现其实除了readdir()方法外,NodeJS本身也提供了另外一个readdirSync()的方法来实现阻滞读取,所以将两个代码片段都进行一下记录吧: