javascript - 想要获取的不是延迟对象而是数组

标签 javascript coffeescript

我想通过代码twitter.tweets()获取推文,但是Twitter类的ajax方法仅返回Deferred对象 如本问题底部所示。

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()

谢谢你的好意。

最佳答案

如果您使用 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)

显然,只有当您想要连续执行多个操作时,这才有意义。 如果你只有一个。比你的代码

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

这是最好的方法。

关于javascript - 想要获取的不是延迟对象而是数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15214253/

相关文章:

javascript - 我将如何在 coffeescript 中编写这个 jQuery?

ruby-on-rails - 在生产中我需要咖啡轨、萨斯轨等吗?

coffeescript - 下摆服务器什么也没提供

javascript - 在选择列表中使用javascript获取属性值

javascript - 转换对象数组 - 一些数组和对象操作

JavaScript 继承——我做的对吗?

javascript - 如何从一个数字生成反菱形?

javascript - 如何获取从 Laravel 4 中的 Angular 传递的 FormData 的值?

javascript - Coffeescript 类返回传递给构造函数的元素

javascript - 尝试本地数据存储时键入错误,如何启动我的网站?