Справка CoffeeScript Hubot: получение данных из функции

Я новичок, мне нужна помощь Hubot/CoffeeScript.

У меня есть несколько ответов, которые будут получать данные из одного и того же источника, но использовать и отвечать на разные части полезной нагрузки. Например...

module.exports = (robot) ->
    robot.hear /score/i, (msg) ->
        score = getScore(today)
        msg.send "today's score is " + score
    robot.hear /yesterday's score/i, (msg) ->
        score = getStore(yesterday) ->
        msg.send "yesterday's score was " + score

Процесс создания URL-адреса для данных результатов включает поиск текущего месяца, дня и года. Я не хочу делать это более одного раза, но у меня будет много ответов, подобных приведенным выше, которые используют одни и те же данные. Я ожидал, что смогу это сделать.

getScore = (day) ->
    #build the url and get the data set
    #pick the right piece of data based on the day variable and assign it to score'

Я думаю, это не работает, потому что это асинхронно. Но выполнение msg.send из функции getScore не работает. Итак, как мне это сделать, чтобы мне не приходилось повторять код getScroe в каждом разделе robot.hear?

Спасибо!


person Craig Rowland    schedule 21.03.2016    source источник


Ответы (1)


Псевдокод:

getScore = (day, callback) ->
      # get the score...
      callback(score)


robot.hear /yesterday's score/i, (msg) ->
    getScore "yesterday", (score) ->
        msg.send "yesterday's score was " + score
person eosterberg    schedule 21.03.2016
comment
Понятно! Спасибо, Эостергерг! Я все еще пытаюсь понять асинхронные функции. - person Craig Rowland; 23.03.2016