0

twitter.tweets()コードでつぶやきを取得したいのですが、クラスのajax メソッドは、この質問の下に示されているようなDeferred オブジェクトTwitterしか返しません。

class Twitter
  tweets = []

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

twitter = new Twitter

###
Present Code
###
twitter.getTweets()
.done ->
  console.log twitter.tweets

###
Ideal Code ... very simple !
###
console.log twitter.tweets()

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

4

1 に答える 1

2

Javascript を使用する場合は、非同期/イベント環境で作業していることを十分に認識しておく必要があります。したがって、最終的にはこれに慣れることを余儀なくされます。もちろん、非同期ライブラリ ( https://github.com/caolan/async )を使用するなど、生活を楽にするいくつかの戦略があります。

async.series [
    (callback) => 
        $.getJSON('http://search.twitter.com/search').done (data) => 
            @tweets = (item for item in data)
            callback(null, pass_some_data_if_you_want)
    ,
    (callback) =>
        $.getJSON('http://search.twitter.com/some_other_search').done (data) => 
            do_what_ever_you_want_and_need()
            callback(null, pass_some_data_if_you_want)
    ],
    (error, result) => handle_error_case(error)

明らかに、これは複数のアクションを連続して実行する場合にのみ意味があります。1つだけ持っている場合。あなたのコードより

twitter.getTweets().done -> console.log twitter.tweets

行くための最良の方法です。

于 2013-03-05T08:37:27.337 に答える