Трудно понять, о чем вы спрашиваете, но я сделаю несколько замечаний:
В коде
clsapp.on 'mysqld', ->
getHostById = (host) -> cls.getHostById.acq host, (c) -> JSON.stringify(result)
Вы, вероятно, имели в виду, что аргумент обратного вызова должен называться result
, а не c
. Если вы не определяете result
в другом месте.
Что еще более важно, у есть для более ясного способа написания этого кода. Немного помогает расширение определения getHostById
на многострочное:
clsapp.on 'mysqld', ->
getHostById = (host) ->
cls.getHostById.acq host, (result) -> JSON.stringify(result)
Теперь, я думаю, что в конечном итоге ваша проблема заключается в том, что вы пытаетесь заставить асинхронную функцию вести себя синхронно, чего вы не можете сделать в JavaScript (или CoffeeScript, который представляет собой тонкий синтаксический слой поверх JS). Поскольку cls.getHostById.acq
принимает обратный вызов, он почти наверняка предназначен для обратного вызова после того, как он вернет , чтобы не блокировать поток. Это означает, что вы не можете написать getHostById
функцию, которая просто возвращает значение, как показывает ваш пример JSON.parse(getHostById('localhost'))
. Вам придется использовать обратный вызов.