Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用无限JavaScript循环创建计划报告_Javascript_Report_Cognos - Fatal编程技术网

使用无限JavaScript循环创建计划报告

使用无限JavaScript循环创建计划报告,javascript,report,cognos,Javascript,Report,Cognos,我正在尝试创建一个新的计划报告,对此我有一个疑问:我如何才能在它上面创建一个脚本,其中包含每10秒运行一个函数的循环?比如: var value = 1; while(value > 0){ setTimeout(function(){myFunction()},10000); value = value -1; } 当我刚刚将我的报告运行到ReportStudio时(没有计划),该脚本会成功执行,但在计划之后它就不再工作了。有人知道为什么会这样,或者有其他想法吗 提前感

我正在尝试创建一个新的计划报告,对此我有一个疑问:我如何才能在它上面创建一个脚本,其中包含每10秒运行一个函数的循环?比如:

var value = 1;
while(value > 0){
    setTimeout(function(){myFunction()},10000);
    value = value -1;
}
当我刚刚将我的报告运行到ReportStudio时(没有计划),该脚本会成功执行,但在计划之后它就不再工作了。有人知道为什么会这样,或者有其他想法吗

提前感谢。

使用代替

此外,不需要while循环

用这个代替:
setInterval(myFunction,10000)

如果要保持相同的结构,可以使用
setTimeout
使其稍微递归:

var repeatedFunction = function(){
  // Do something
  setTimeout(repeatedFunction, 10 * 1000);
};
但是您最好使用
setInterval

setInterval(function(){
  // do something
}, 10 * 1000);
如果需要取消,请存储时间间隔:

var repeatedFunction = setInterval(function(){
  // do something
}, 10 * 1000);

// .. something happened; need to cancel
clearTimeout(repeatedFunction);

代码中没有无限循环<代码>同时执行
,直到可以对条件进行评估
false
。在你的情况下,这发生在第一轮之后。你甚至不应该尝试使用无限循环,它会阻塞整个浏览器,最终浏览器会崩溃。很抱歉“无限”,这是一个老主意。我只是想偶尔执行这个函数,你到底想做什么?我试图了解在计划报表中使用JavaScript的方法,我想通过portlet通道将一个参数从一个报表传递到另一个报表。我以前已经做过了,但不是预定的报告。然后,我考虑创建一个javascript来检查参数更改。但是,在报告时间表之后,我的脚本不再执行。我已经尝试了这两个函数(setInterval和setTimeout),Javascript不会在计划的(后台报告)中运行。它仅在报告实际在persons web浏览器中以交互方式运行时运行。