小心coffeescript中的无参函数的调用

在coffeescript中调用没有参数的函数时一定忘了加括号! 已经在这个地方卡了N次了, 这里备忘一下.

起因

之前为了学习nodejs, 所以找了准备写个操作数据库的小程序练练手. 网上查了一下, 基本都是使用node-mysql这个库. 网上有很多现成的小例子, 不过很多都是基于v0.9版本的(当时排查问题的时候很纳闷呢).

OK, 根据github的上介绍, 写了这样一段简单的代码:

coffee try.coffee
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
dbinfo =
    host : 'localhost'
    user : 'dudu'
    password : 'udud'
    database : 'test'

mysql = require 'mysql'

connection = mysql.createConnection dbinfo

connection.query 'select * from duoduo limit 1973', (err, rs) ->
    connection.end

    if err?
        console.log "in query" + err
        return

    console.log rs

可以很平稳的运行, 但是比较郁闷的是进程会一直hang住, 感觉像是connection.end没有正常调用, 但是又找不出原因…

解决

之后就一直在网上找, 也没有找到相关的问题. 难道都没有遇到过这个问题. 最后没有办法, 只能先将coffee代码转成js代码看看了, 发现果然是connection.end没有被调用. 好吧, 省略括号省习惯, 以后一定要小心;)

将上面的对应调用后面加上(), 问题顺利解决.

Comments