全局或传递函数
试图把东西传递给别的东西。 说undefined。 不知道如何或为什么。
clsapp.on 'mysqld', -> getHostById = (host) -> cls.getHostById.acq host, (c) -> JSON.stringify(result)
我需要一些方法来访问getHostById('localhost').hostname
而另一部分的.js
clsapp.on getHostById('localhost'), (c) -> console.log JSON.parse(getHostById('localhost')).hostname
只是null或undefined
很难理解你在问什么,但我会做一些观察:
在代码中
clsapp.on 'mysqld', -> getHostById = (host) -> cls.getHostById.acq host, (c) -> JSON.stringify(result)
你可能意味着被称为result
的callback参数,而不是c
。 除非你在其他地方定义result
。
更重要的是, 你必须有一个更清晰的方式来编写这段代码。 只是将getHostById
的定义扩展为多行帮助一下:
clsapp.on 'mysqld', -> getHostById = (host) -> cls.getHostById.acq host, (result) -> JSON.stringify(result)
现在,我认为最终,你的问题是你试图让一个asynchronous函数同步行为 – 这是你在JavaScript中不能做的(或者CoffeeScript,它是JS之上的一个简单的语法层)。 由于cls.getHostById.acq
需要callback,因此它几乎可以肯定地被devise为在callback之后调用该callback,以便它不会阻塞该线程。 这意味着你没有办法编写一个getHostById
函数来简单地返回一个值,就像你的JSON.parse(getHostById('localhost'))
示例所示。 你将不得不使用callback。