2013-03-04 64 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不需要定义类,因为你不存储任何状态。

顺便说一句,你可以阅读一些贴子更深了解的东西如何异步工作方式: