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分钟作为连续迭代之间的等待时间,否则系统可能崩溃。