首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >javascript -如何控制setinterval内部

javascript -如何控制setinterval内部
EN

Stack Overflow用户
提问于 2020-04-19 05:23:33
回答 3查看 64关注 0票数 0

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

代码语言:javascript
复制
setInterval(function() {
  // some code
  // runs here
}, 60000);

我想以1分钟的间隔执行一些代码,在某些情况下,我的代码可能需要2-3分钟。

代码语言:javascript
复制
<execute code> - <wait 1 minute> - <execute code> - <wait 1 minute> ......so on

我尝试使用setInterval函数,但注意到setInterval不等待内部代码完成。请建议我如何在javascript中实现这一点。

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-04-19 05:33:36

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

代码语言:javascript
复制
setTimeout(function jobThatRunEveryMinute() {
  // run code here that may take more than one minute
  someExpensiveCodeToRun()

  // start another job after someExpensiveCode completes
  setTimeout(jobThatRunEveryMinute, 60000);
}, 60000);
票数 2
EN

Stack Overflow用户

发布于 2020-04-19 05:33:49

这样的东西可能对你有用,但是为什么你有一个函数需要超过1分钟的时间来返回一些东西呢?

代码语言:javascript
复制
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);
票数 0
EN

Stack Overflow用户

发布于 2020-04-19 06:13:42

代码语言:javascript
复制
// adjust wait time to your liking
const waitTime = 10000 
let time = 0
// so you can stop it
const totalTime = 6 

function excuteCode() {
  time++;
  console.log(time);  // <=== replace with your inner code
  if (time < totalTime) {
    setTimeout(() => {
      excuteCode()
    }, waitTime)
  }
}

excuteCode();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61296431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档