2011-08-29 42 views
1

我有一个问题“太多了”,第21行“我不能编译这个咖啡脚本代码到Node.js中 任何有关这些”)“的帮助? 感谢CoffeeScript to Node.js语法问题的“)”

amqp = require('amqp') 

class Queue 
    constructor: (ip = 'localhost') -> 
      @ip = ip 
      @receivedObject 
      @connection = amqp.createConnection({ host: @ip }) 

    subscribeTaskQueue: (queueToSubscribe) -> 
      self = @ 
      self.connection.on('ready', -> 
        q = self.connection.queue(queueToSubscribe) 
        q.bind('#') 

        q.subscribe({ ack: true }, (message) -> 
          self.receivedObject = message 
          console.log(self.receivedObject) 
        ) 
      ) 

    addTaskToQueue: (queue, objectToSend) -> 
      @connection.publish(queue, objectToSend) 

module.exports = Queue 
+0

我解决我的问题,同时使岗位。 我用tab来缩进代码。 为了使我的文章格式合理化,我使用了空格,并且在不查找它的情况下编译语法。 我再也不会在CoffeeScript中使用制表了,我推荐只有空格 – blip

+1

这是世界上许多问题“软标签,2个空格”的解决方案。 –

回答

6

这是其中的CoffeeScript岩一个区:调用带参数的函数时,你可以省略括号!这在Node中特别好,回调通常是最后一个参数。

像这样:

amqp = require 'amqp' 

class Queue 

    constructor: (ip = 'localhost') -> 
     @ip = ip 
     @receivedObject 
     @connection = amqp.createConnection { host: @ip } 

    subscribeTaskQueue: (queueToSubscribe) -> 
     self = @ 
     self.connection.on 'ready', -> 
       q = self.connection.queue queueToSubscribe 
       q.bind '#' 

       q.subscribe { ack: true }, (message) -> 
         self.receivedObject = message 
         console.log(self.receivedObject) 

    addTaskToQueue: (queue, objectToSend) -> 
     @connection.publish queue, objectToSend 

module.exports = Queue