Это на самом деле не проблема Coffeescript, а только то, как работают асинхронные запросы.Вы не можете сразу же вернуть результат из вызова XHR, вам нужно определить обратный вызов, который получит результат (или ошибку) после завершения вызова.
Посмотрите, к чему ваш код компилируется (как Javascript).
getId: ->
## .. snip ..
$.ajax ## .. snip ..
У вас есть функция getId
, которая возвращает возвращаемое значение $.ajax
, которое (согласно спецификации jQuery) является объектом XHR, а не результатом обратного вызова success.Вы можете использовать его для проверки хода выполнения, отмены запроса, установки дополнительных параметров и т. Д.
success: (data) =>
## .. snip ..
return res
Нет смысла возвращать что-либо из обратного вызова XHR.Вам нужно работать с данными прямо здесь, например, помещать их в DOM или вызывать другую функцию, которая делает с ними что-то полезное.