JavaScript setInterval - 函数只调用一次
Posted
技术标签:
【中文标题】JavaScript setInterval - 函数只调用一次【英文标题】:JavaScript setInterval - function only called once 【发布时间】: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);
感谢您的帮助,
杰森
【问题讨论】:
【参考方案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);
;
【讨论】:
以上是关于JavaScript setInterval - 函数只调用一次的主要内容,如果未能解决你的问题,请参考以下文章
Javascript:setInterval'Resumes'而不是'Reset'按钮点击