我发现了许多与使用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文件中。
答案 0 :(得分:0)
这是事情。在setInterval中运行函数时,即使在ajax方法中调用setInterval,它也完全不同。因此,我建议您首先检查 * 某些条件是否为真 * 语句。