2013-03-04 49 views
0

我寫的CoffeeScript來從Twitter獲得的鳴叫,但有些事情似乎是錯誤的...我想鳴叫但像遞延對象的對象返回

class TwitterAPI 
    getTweets: -> 
    tweets_array = [] 
    $.getJSON('http://search.twitter.com/search.json?callback=?&rpp=100&q=%40weed_7777') 
    .done((data, status) -> 
     $.each data.results, (i, item) -> 
     tweets_array.push item.text 

     return tweets_array 
    ) 

twitter_api = new TwitterAPI 
tweets = twitter_api.getTweets() 
console.log tweets # returns object looks like Differed object 

console.log tweets的含量低於:

我想要做的就是獲取推文作爲數組。

感謝您的好意。

+1

什麼是寫Coffescript如果不是慣用的意義呢?你的問題是縮進,因爲'return'(不需要)應該在外面。即使你修復它,數組也不會有預期的結果,因爲你的代碼運行異步,你會得到一個空數組。 – elclanrs 2013-03-04 07:51:24

+0

縮進在這裏確定,主要問題不是沒有發現異步的東西IMO – 2013-03-04 08:52:44

回答

1

這應該完成這項工作:

getTweets = (callback) -> 
    $.getJSON('http://search.twitter.com/search.json?callback=?&rpp=100&q=%40weed_7777') 
    .done (data) -> 
    callback (i.text for i in data.results) 

getTweets (tweets) -> 
    console.log tweets 

正如@elclanrs說,HTTP請求是異步的,所以你應該通過回調或使用這裏推遲。 IMO不需要定義類,因爲你不存儲任何狀態。

順便說一句,你可以閱讀一些貼子更深瞭解的東西如何異步工作方式: