Xam*_*eer 3 javascript settimeout
我知道有一个答案,但是!! 所有的答案在循环中只覆盖了一个setTimeout这个问题看起来与我有关如何在JavaScript循环中添加延迟? 但是在我的场景中我在脚本中有两个setTimeout,如何在时间上正确实现!该程序正常工作,但我想要的时间不正确!
function clickDate(i)
{
setTimeout((function(){
alert("4");
})(),2000);
}
function clickButton(i)
{
setTimeout((function(){
alert("5");
})(),4000);
}
function doEverything(i)
{
clickDate(i);
clickButton(i);
}
for(var i = 0; i < 4; i++)
{
doEverything(i);
}
Run Code Online (Sandbox Code Playgroud)
当您将该函数传递给setTImeout时,您将立即调用该函数.删除额外的括号.
function clickDate(i)
{
setTimeout(function(){
alert("4");
},2000);
}
function clickButton(i)
{
setTimeout(function(){
alert("5");
},4000);
}
function doEverything(i)
{
clickDate(i);
clickButton(i);
}
for(var i = 0; i < 4; i++)
{
doEverything(i);
}Run Code Online (Sandbox Code Playgroud)
编辑
有点不清楚你希望你的代码在你i进入你的函数时看到的确切内容我假设你想以某种方式使用它.目前,您正在创建一次性全部启动的超时.如果您希望它们按顺序启动,您需要错开延迟时间.下面的代码每2秒记录一次"4",每隔"4"秒记录一次"5",将延迟时间乘以i+1.
// Currently this code displays a 4 every 2 seconds and a 5 every 4 seconds
function clickDate(i)
{
setTimeout(function(){
console.log("4");
},2000 * (i+1));
}
function clickButton(i)
{
setTimeout(function(){
console.log("5");
},4000 * (i+1));
}
function doEverything(i)
{
clickDate(i);
clickButton(i);
}
for(var i = 0; i < 4; i++)
{
doEverything(i);
}Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
801 次 |
| 最近记录: |