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

Я новичок, нуждающийся в помощи 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?

Спасибо!

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
Другие вопросы по тегам