如何在JavaScript中每隔5分钟在循环中调用两个交替函数?
确认该方法是可行的,因此从以下内容开始:如何在JavaScript中每隔5分钟在循环中调用两个交替函数?,javascript,loops,asynchronous,timeout,Javascript,Loops,Asynchronous,Timeout,确认该方法是可行的,因此从以下内容开始: for (var i = 1; i <= 3; i++) { (function(i) { setTimeout(function() { console.log(i + " second(s) elapsed"); }, i * 1000); })(i); } tldr 也考虑过使用 另见: 您可以有两个函数,它们通过超时互相调用,如下所示。您还可以跟踪计时器,以防在事件发生时或某个持续时间后停止计时
for (var i = 1; i <= 3; i++) {
(function(i) {
setTimeout(function() {
console.log(i + " second(s) elapsed");
}, i * 1000);
})(i);
}
tldr 也考虑过使用
另见:
您可以有两个函数,它们通过超时互相调用,如下所示。您还可以跟踪计时器,以防在事件发生时或某个持续时间后停止计时器
函数切换调用(){
var timer={timeout:null};
函数callA(){
console.log(“被调用方”);
timer.timeout=setTimeout(callB,1000);
}
函数callB(){
控制台日志(“B调用”);
timer.timeout=setTimeout(callA,1000);
}
胼胝体();
返回计时器;
}
var timer=toggleCalls();
setTimeout(函数(){
clearTimeout(timer.timeout);
控制台日志(“停止”);
}, 5000);代码>您可以有两个函数,它们通过超时互相调用,如下所示。您还可以跟踪计时器,以防在事件发生时或某个持续时间后停止计时器
函数切换调用(){
var timer={timeout:null};
函数callA(){
console.log(“被调用方”);
timer.timeout=setTimeout(callB,1000);
}
函数callB(){
控制台日志(“B调用”);
timer.timeout=setTimeout(callA,1000);
}
胼胝体();
返回计时器;
}
var timer=toggleCalls();
setTimeout(函数(){
clearTimeout(timer.timeout);
控制台日志(“停止”);
}, 5000);代码>尝试使用间隔函数
setInterval (()=> {
// TODO inserte code here
}, 300*1000);
尝试使用区间函数
setInterval (()=> {
// TODO inserte code here
}, 300*1000);
如果要进入循环,可以将URL放入数组中并在其上循环,每次调用下一个URL的setTimeout()
:
让URL=[
"https://www.bbc.com",
"https://www.cnn.com",
"https://www.npr.org"
]
函数OpenURL(URL,i=0){
setTimeout(函数(){
log(URL[i])//或您想在此处调用的任何内容
OpenURL(URL,(i+1)%URL.length)
}, 1000)
}
OpenURL(URL)
如果要循环,可以将URL放入数组中并在其上循环,每次调用setTimeout()
:
让URL=[
"https://www.bbc.com",
"https://www.cnn.com",
"https://www.npr.org"
]
函数OpenURL(URL,i=0){
setTimeout(函数(){
log(URL[i])//或您想在此处调用的任何内容
OpenURL(URL,(i+1)%URL.length)
}, 1000)
}
OpenURL(URL)
window.open()
需要发生一个用户事件,以防止滥用,并让任何网页大量打开windows@charlietfl你是说,像鼠标点击一样不管怎样:,或者至少看起来是。。。也就是说,我可以通过Firefox的Scratchpad调用它……您可能正在这篇文章中寻找setInterval()case@CalvinNuneslike.window.open()
要求发生一个用户事件,以防止滥用,并使任何网页打开很多次windows@charlietfl你是说,像鼠标点击一样不管怎样:,或者至少看起来是。。。也就是说,我可以通过Firefox的Scratchpad调用它……您可能正在这篇文章中寻找setInterval()case@CalvinNunes就像。我几乎把它作为我发布的另一种方法的替代方法,但你抢先了我一步。这是一个很好的方法。如果需要做的工作不仅仅是打开一个url,还可以使用一系列函数<编码>[openBBC,openCNN,openNPR,…]
并调用那些URL[(i+1)%URL.length]()
hmm;复制粘贴到Firefox草稿行;肇事逃逸;没有骰子。@nuttyaboutnatty我只是在草稿行中运行,没有问题console.log()
写入浏览器窗口中的控制台-因此需要在那里进行loo以获得输出。但是你可能会做一些事情,而不仅仅是登录到控制台。谢谢你的回答和运行它:我需要弄清楚为什么它(还)不能在我的系统上工作。还不知道为什么(浏览器控制台会抛出一些错误,但不确定它是否源于运行此脚本或其他打开的网站),但当我这样做时,我会报告:)设法让它在3个FF浏览器中的2个浏览器中运行(仍然不明白为什么它不会在其中1个浏览器中运行)。您能否解释一下如何将console.log()
替换为window.open()
和/或document.getElementById(“mySecondID”)。单击()代码>?非常感谢!我几乎把它作为我发布的另一种方法的替代方法,但你抢先一步。这是一个很好的方法。如果需要做的工作不仅仅是打开一个url,还可以使用一系列函数<编码>[openBBC,openCNN,openNPR,…]
并调用那些URL[(i+1)%URL.length]()
hmm;复制粘贴到Firefox草稿行;肇事逃逸;没有骰子。@nuttyaboutnatty我只是在草稿行中运行,没有问题console.log()
写入浏览器窗口中的控制台-因此需要在那里进行loo以获得输出。但是你可能会做一些事情,而不仅仅是登录到控制台。谢谢你的回答和运行它:我需要弄清楚为什么它(还)不能在我的系统上工作。还不知道为什么(浏览器控制台会抛出一些错误,但不确定它是否源于运行此脚本或其他打开的网站),但当我这样做时,我会报告:)设法让它在3个FF浏览器中的2个浏览器中运行(仍然不明白为什么它不会在其中1个浏览器中运行)。您能否解释一下如何将console.log()
替换为window.open()
和/或document.getElementById(“mySecondID”)。单击()代码>?非常感谢!尝试替换console.log(“被调用的”)代码>带有窗口。打开(“https://www.twitter.com“,”self“
”等,但只调用站点A(如twitter.com)并停留在那里;站点B从未加载。您的脚本可以使用window.open()
吗,还是只能使用其他方法document.getElementById(“myFirstID”)。单击()代码>(我还没试过)?@nuttyaboutnatty As ot