我的代码类似于:
$(document).ready(function(){
var cont = 0;
function func1(cont)
{
//Some code here
search.setSearchCompleteCallback(this, searchComplete, null);
//Some other code
}
func1(cont);
function searchComplete()
{
//Some code
cont += 1;
if (cont < length ) {
func1(cont);
} else {
// Other code
}
}
});
所以我想做的是延迟执行func1(续);在searchComplete()函数内部。这样做的原因是所有代码都是使用Google搜索API和PageRank检查,我需要放慢脚本速度,这样我才不会被禁止。 (特别是关于公关检查的要求)。 如果我只是在func1(cont)上使用setTimeout();它说没有定义func1(),如果我尝试在$(document).ready()之外获取该函数,它会看到该函数,但Google代码不会因为它需要完全加载的页面。
如何修复setTimeout或如何暂停脚本几秒钟?
谢谢!
答案 0 :(得分:5)
写
func1(cont);
作为
window.setTimeout(function() {
func1(cont);
}, 1000);
答案 1 :(得分:1)
而不是像这样声明这个函数:
function func1(cont) {}
声明如下:
var func1 = function(cont) {}
您需要稍微重新安排代码:
$(document).ready(function(){
var cont = 0;
var func1;
var searchComplete = function()
{
//Some code
cont += 1;
if (cont < length ) {
func1(cont);
} else {
// Other code
}
}
func1 = function(cont)
{
//Some code here
search.setSearchCompleteCallback(this, searchComplete, null);
//Some other code
}
func1(cont);
});
答案 2 :(得分:0)
我会尝试这样的事情。我更喜欢在jquery命名空间中声明变量和函数,但是您可以同样地移动cont变量和文档就绪函数之外的函数,并使它们全局可用。
$(document).ready(function(){
$.cont = 0;
$.func1 = function() {
//Some code here
search.setSearchCompleteCallback(this, $.searchComplete, null);
//Some other code
}
$.searchComplete = function() {
//Some code
$.cont += 1;
if (cont < length ) {
setTimeout($.func1,1000);
} else {
// Other code
}
}
setTimeout($.func1,1000); // delay the initial start by 1 second
});
答案 3 :(得分:0)
希望我的描述正确无误:
this
的父对象)如果是这种情况,为什么还需要在document.ready()范围内声明的任何函数?你不能简单地让所有3全球? e.g。
var search = null; // initialise the google object
var cont = 0;
function timedSearch()
{
search.setSearchCompleteCallback(this, searchComplete, null);
}
function searchComplete()
{
if (++cont < length) // postfix it below if this is wrong
setTimeout(timedSearch,1000);
}
$(document).ready(function()
{
setTimeout(timedSearch,1000);
}
如果我误解了,请用downvotes打我。