Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.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-如何控制setinterval内部_Javascript_Node.js - Fatal编程技术网

javascript-如何控制setinterval内部

javascript-如何控制setinterval内部,javascript,node.js,Javascript,Node.js,在我的应用程序开发中,我使用 setInterval(function() { // some code // runs here }, 60000); 我想以1分钟的间隔执行一些代码,在某些情况下,我的代码可能需要2-3分钟 <execute code> - <wait 1 minute> - <execute code> - <wait 1 minute> ......so on ---…等等 我尝试使用setInterval函数

在我的应用程序开发中,我使用

setInterval(function() {
  // some code
  // runs here
}, 60000);
我想以1分钟的间隔执行一些代码,在某些情况下,我的代码可能需要2-3分钟

<execute code> - <wait 1 minute> - <execute code> - <wait 1 minute> ......so on
---…等等
我尝试使用setInterval函数,但注意到setInterval并不等待内部代码完成。请建议我如何在javascript中实现这一点


谢谢

一个更好的方法可能是使用
setTimeout
递归调用作业函数:

setTimeout(function jobThatRunEveryMinute() {
  // run code here that may take more than one minute
  someExpensiveCodeToRun()

  // start another job after someExpensiveCode completes
  setTimeout(jobThatRunEveryMinute, 60000);
}, 60000);

更好的方法可能是使用
setTimeout
递归调用作业函数:

setTimeout(function jobThatRunEveryMinute() {
  // run code here that may take more than one minute
  someExpensiveCodeToRun()

  // start another job after someExpensiveCode completes
  setTimeout(jobThatRunEveryMinute, 60000);
}, 60000);

像这样的东西可能对你有用,但是为什么你有一个需要1分钟才能返回的函数呢

let callCompleted = true;

setInterval(function() {
   if (callCompleted) {
      callCompleted = false;

      // pass a call back function to update the callCompleted to true
      myLongRunningFunction(function() { callCompleted = true } );

      // or if `myLongRunningFunction` returns a promise 
      myLongRunningFunction.then(() => { callCompleted = true } );
   } 
}, 60000);

像这样的东西可能对你有用,但是为什么你有一个需要1分钟才能返回的函数呢

let callCompleted = true;

setInterval(function() {
   if (callCompleted) {
      callCompleted = false;

      // pass a call back function to update the callCompleted to true
      myLongRunningFunction(function() { callCompleted = true } );

      // or if `myLongRunningFunction` returns a promise 
      myLongRunningFunction.then(() => { callCompleted = true } );
   } 
}, 60000);
//根据您的喜好调整等待时间
常数等待时间=10000
让时间=0
//所以你可以阻止它
常数totalTime=6
函数excuteCode(){
时间++;
console.log(时间);//{
执行代码()
},等待时间)
}
}
excuteCode();
//根据您的喜好调整等待时间
常数等待时间=10000
让时间=0
//所以你可以阻止它
常数totalTime=6
函数excuteCode(){
时间++;
console.log(时间);//{
执行代码()
},等待时间)
}
}
excuteCode();

我想以1分钟的间隔执行一些代码,我的代码可能需要2-3分钟,因此间隔1分钟或2或3分钟?如果您的代码可能需要比间隔更长的时间,然后,
setTimeout
可能是一个更好的选择,这样您就不会在第一次迭代完成之前开始下一次迭代。为什么您的代码需要这么多时间?您在其中有承诺吗?一些警告:如果您的代码需要每隔1分钟执行一次操作,你真的不想依赖于
setInteverl
setTimeout
,因为你的用户会失去兴趣,转而使用不同的选项卡,这将严重降低选项卡的优先级,并导致间隔基本上完全无效。你到底想做什么?也就是说,间隔是达到目的的手段,实际上每分钟发生一次什么?一分钟的分数重要吗?因为它可能不是:当您的用户返回到您的选项卡时,他们应该看到什么?我正在从原始数据计算摘要数据,并希望显示在仪表板页面上。我将1分钟作为连续迭代之间的等待时间,否则系统可能会崩溃。我希望以1分钟的间隔执行一些代码,我的代码可能需要2-3分钟,因此间隔为1分钟或2或3分钟?如果您的代码可能需要比间隔更长的时间,然后,
setTimeout
可能是一个更好的选择,这样您就不会在第一次迭代完成之前开始下一次迭代。为什么您的代码需要这么多时间?您在其中有承诺吗?一些警告:如果您的代码需要每隔1分钟执行一次操作,你真的不想依赖于
setInteverl
setTimeout
,因为你的用户会失去兴趣,转而使用不同的选项卡,这将严重降低选项卡的优先级,并导致间隔基本上完全无效。你到底想做什么?也就是说,间隔是达到目的的手段,实际上每分钟发生一次什么?一分钟的分数重要吗?因为它可能不是:当您的用户返回到您的选项卡时,他们应该看到什么?我正在从原始数据计算摘要数据,并希望显示在仪表板页面上。我把1分钟作为连续迭代之间的等待时间,否则系统可能崩溃。