0

Twitterからツイートを取得するためにCoffeeScriptを書いていますが、何かがおかしいようです...

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は以下のとおりです。

私がやりたいのは、ツイートを配列として取得することです。

ご親切にありがとうございます。

4

1 に答える 1

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 要求は非同期であるため、コールバックを渡すか、ここで deferred を使用する必要があります。また、IMOはクラス定義に必要はありません。そこに状態を保存しないためです。

ところで、いくつかの投稿を読んで、非同期の仕組みをより深く理解できます。

于 2013-03-04T08:44:54.447 に答える