【问题标题】:JavaScript setInterval - function only called onceJavaScript setInterval - 函数只调用一次
【发布时间】:2012-08-23 14:38:44
【问题描述】:

我正在尝试使用调用 dajaxice 函数的 setInterval 定期检索 twitter 提要,但我在多次调用该函数时遇到了问题。 setInterval 如果我只是在控制台写一行,但是当我尝试调用我的 dajaxice 函数时它只发生一次。

ajax.py:

@dajaxice_register
def get_home_timeline(request):
    home_timeline = oauth_req(
    'http://api.twitter.com/1/statuses/home_timeline.json?count=2',
    settings.TWITTER_TOKEN_KEY,
    settings.TWITTER_TOKEN_SECRET
    )
    return simplejson.dumps({'home_timeline': home_timeline })

def oauth_req(url, key, secret, http_method="GET", post_body=None, http_headers=None):
    consumer = oauth.Consumer(key=settings.TWITTER_CONSUMER_KEY, secret=settings.TWITTER_CONSUMER_SECRET)token = oauth.Token(key=key, secret=secret)
client = oauth.Client(consumer, token)

resp, content = client.request(
url,
    method=http_method,
    # body=post_body,
    # headers=http_headers,
    # force_auth_header=True
)
return content

base.html:

var get_timeline = Dajaxice.modules.ticker.get_home_timeline(get_home_timeline_callback);

    function getTweets(){
        intervalId = setInterval(get_timeline, 2000);
    }

感谢您的帮助,

杰森

【问题讨论】:

    标签: python ajax django dajaxice


    【解决方案1】:
    var get_timeline = 
       Dajaxice.modules.ticker.get_home_timeline(get_home_timeline_callback);
    

    这不是调用函数的闭包,而是立即调用函数(甚至在您设置间隔之前)。

    在想你想要的

    var get_timeline = function(){
       Dajaxice.modules.ticker.get_home_timeline(get_home_timeline_callback);
    };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-08
      • 2012-09-24
      • 1970-01-01
      相关资源
      最近更新 更多