请教一下高手们,如何顺序执行数据库操作?
发布于 8 年前 作者 winglight 3940 次浏览 来自 问答

我在用parse作为后端,需要进行一个查询-删除-插入的顺序操作,但是目前这种异步模式必须用回调来做,但是这种写法明显太乱太低效,有没有更好更优雅的解决方案啊?

为了提高效率,顺便问另一个文字编码问题,我用js-crawler爬了big5页面回来,但是发现文字是乱码,用iconv转,怎么都转不对,请问大家怎么处理这种问题的?

7 回复

“异步模式必须用回调来做,但是这种写法明显太乱太低效” 请解释下为什么你会主要认为?

@haozxuan 我现在才三步操作就要嵌套两次回调,以后步骤再多难道继续嵌套,何况还有条件分支,代码这样写完了就看不懂了啊

找了一些parse的文档,发现可以用promise,也不错了。

@winglight 请不要用同步的思维来使用node做异步io,你担心回调嵌套层数过多,这问题属于历史问题,目前已经有很多异步流解决方案,至于你说的太低效,更是无中生有,如果你认同node的异步io低效为什么还要引入?

@haozxuan

楼主可能说的是编码效率低效,并不是说nodejs性能低效(虽然事实上nodejs现在也不能算高效了,中等水平而已)。

事实证明,nodejs现在就是在朝同步编码方向发展,这是大势,没多少人愿意用显示异步方式去写代码的。

我个人认为只要理解异步就行了,编码还是同步的好。其实nodejs和go之类的新技术比起来,不管在性能上还是编程模型上都落后了。

@coordcn 是的,我说的低效是开发效率低。不知道你说的性能更高效指的是什么架构?

@winglight

go

openresty

fibjs

开发效率和性能都比nodejs强,nodejs自身不做出改变,被取代只是时间问题。

对于异步,我们仅仅需要异步带来的性能好处,异步本身不是我们需要的,这个东西会明显增加编程难度。以上三个方向都用协程将显式异步转换为了形式同步,在编码上保持了同步样式,又获得了异步的好处,这才是未来的方向。nodejs自限于javascript标准,不管是promise,还是generator,还是async/await,都是显式的异步,显式的异步就具有传染性,只能实现局部同步,编码过程还是离不开异步思维。

回到顶部