如何创建一个rucursive超时函数
How to create a rucursive timeout function
我正在尝试用JavaScript构建一个递归超时函数。该函数应该递归运行,直到它完成,每次不满足条件时将超时乘以1.5。
到目前为止,这就是我所拥有的,但它在atm上不起作用。不确定我做错了什么。
var condition;
function doSomething(arg)
{
if (window.condition === true)
{
recursiveTimeout(arg, 3500);
}
else
{
doSomethingElse(arg);
}
}
function recursiveTimeout(arg, time)
{
setTimeout(function(){
if (window.condition === true)
{
var newTime = (time * 1.5);
recursiveTimeout(arg, time);
}
else
{
doSomethingElse(arg);
}
}, time);
}
但不确定为什么不起作用。感谢您的帮助。
我对您的代码做了一些更改,使其在jsFiddle:中运行
var condition = true;
function doSomething(arg)
{
if (condition === true)
{
recursiveTimeout(arg, 100);
}
else
{
doSomethingElse(arg);
}
}
function doSomethingElse(arg){
console.log("Doing something else" + arg);
}
function recursiveTimeout(arg, time)
{
console.log("Recursive waiting" + time);
setTimeout(function(){
if (condition === true)
{
var newTime = (time * 1.5);
if (newTime > 2000) condition = false;
recursiveTimeout(arg, newTime);
}
else
{
doSomethingElse(arg);
}
}, time);
}
doSomething("x");
Fiddle
看起来有一条注释已经指出了最大的问题,因为您没有使用newTime变量,所以您总是将其设置为3500。
看到它在钢笔里工作。http://codepen.io/justindunham/pen/tvnKz
var recursiveTimeout = function(arg, time) {
console.log('recursiveTimeout(' + time + ')');
timeout = setTimeout(function(){
if (window.condition == true) {
var newTime = (time * 1.5);
recursiveTimeout(arg, newTime);
}
else {
doSomethingElse(arg);
}
}, time);
}
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- jQuery:循环一个具有不同超时值的循环
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 从javascript创建一个列表
- 节点导出返回一个空对象
- 使用clickToggle并在单击另一个元素时关闭元素
- 我可以在json对象中添加一个函数吗
- 使用javascript将动态表从一个html页面打印到另一个html页
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- 表追加而不附加最后一个元素
- 我如何找到一个句子中的所有空格并替换忽略它们
- D3在一个调用中绘制不同的SVG形状,没有可见性
- 如何在android中使用phonegap将文件从一个文件夹移动/复制到另一个文件夹
- 使用类从一个标记中双击事件
- Javascript,访问一个主要对象模块模式中的每个对象
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- 如何在elfinder插件(一个文件管理器插件)上获得上传前事件
- 我应该如何从xml文件构建一个javascript页面
- Regex代码只允许一个空格
- 如何创建一个rucursive超时函数