使用JavaScript setInterval函数

时间:2013-05-31 13:41:13

标签: javascript jquery setinterval

我发现了许多与使用JavaScript setInterval()函数相关的问题并找到了答案并实现了它们,但是我的运气不好,没有人能获得成功。我可能会犯一些愚蠢的错误,但我现在无法找到它。以下是我的代码段。

$.ajax({
url: "https://api.dropbox.com/1/oauth/request_token",

data:`{"oauth_version":"1.0","oauth_signature_method":"PLAINTEXT","oauth_consumer_key":"consumer_key","oauth_signature":"signature&"}`,
    type: 'POST',
    async: false,
    cache: false,
    dataType: 'text', 
    contentType: "application/x-www-form-urlencoded",
    processData: true,
success: function(requestInfo)
{
        console.log("requestInfo: "+requestInfo);
    requestInfo = "http://localhost/?"+requestInfo;

    var oauth_request_token = processQueryStringData(requestInfo, 'oauth_token'); //a regex function that parses oauth_token from requestInfo
    var oauth_request_token_secret = processQueryStringData(requestInfo, 'oauth_token_secret');//a regex function that parses oauth_token_secret from requestInfo
    console.log("oauth_token_secret: "+oauth_request_token_secret);
    console.log("oauth_request_token: "+oauth_request_token);

    var url = "<url-to-redirect to dropbox alongwith callback url>";
    var win         =   window.open(url, 'DropBox Auth', 'width=800, height=600');  


var pollTimer   =   window.setInterval(function() { 
try {
        console.log("URL     ===== :   "  + win.document.URL);
        if(**some condition is true**)
        {
            window.clearInterval(pollTimer);
            // some code that i need to execute to get the authorize token and then the access tokens.
        }
    } 
catch(e)
{
}
}, 1000);

});

ajax返回成功,我得到oauth_request_token和oauth_request_token_secret。 Dropbox登录页面也会在子窗口中打开。但是setInterval没有执行,因为我在控制台上看不到 console.log(“URL =====:”+ win.document.URL);

此外,在阅读了几个答案之后,我创建了一个名为 event 的函数,其中我将代码置于setInterval回调函数中并调用该函数,如

var pollTimer   =   window.setInterval(event,1000); 

此时, pollTimer 是全局的。另外,我只看了一次日志语句,然后刷新了html页面。我无法理解我哪里出错了。可能碰巧是一个愚蠢的错误,但无法弄清楚。请帮助。

注意:此代码位于.js文件中的函数中,该函数包含在html文件中。

1 个答案:

答案 0 :(得分:0)

这是事情。在setInterval中运行函数时,即使在ajax方法中调用setInterval,它也完全不同。因此,我建议您首先检查 * 某些条件是否为真 * 语句。