我希望通过代码twitter.tweets()
获取推文,但类Twitter
的 ajax方法仅返回延迟对象,如下图所示问题
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()
谢谢你的善意。
答案 0 :(得分: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)
显然,只有你想要串行执行的多个动作才有意义。 如果你只有一个。比你的代码
twitter.getTweets().done -> console.log twitter.tweets
是最好的方式。