2016-03-21 26 views
0

Bazı Hubot/CoffeeScript yardımına ihtiyaç duyan bir acemiyim.CoffeeScript Hubot yardım: bir işlevden veri alma

Aynı kaynaktan gelen verileri alacağım, ancak yükün farklı parçalarını kullanan ve yanıtlayan birkaç yanıtım var. Örneğin ...

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 

Skor verilerinin URL'sini oluşturma işlemi, o andaki aya, güne ve yıla bakmayı içerir. Bunu bir kereden fazla yapmak istemiyorum ama aynı verileri kullanan yukarıdaki gibi birçok yanıtım olacak. Bunu yapabilmeyi bekledim.

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' 

Bu sanki işe yaramıyor çünkü asenkron. Ancak, getScore işlevinin içinden msg.send işlevi çalışmıyor. Bu yüzden, her robot.hear bölümünde getScroe kodunu tekrarlamak zorunda kalmamak için bunu nasıl yaparım?

Teşekkürler!

cevap

0

sözde kod:

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 
+0

Anladım! Teşekkürler eostergerg! Hala başımı uyumsuz fonksiyonlar etrafında sarmaya çalışıyorum. –