如何暂停javascript方法而不浪费计算?

如何暂停javascript方法而不浪费计算?,javascript,Javascript,本质上,如何暂停javascript执行而不必在while循环之类的东西上浪费计算 例如,假设我只想在10秒后执行下一个函数,而不中断其他进程或浪费计算设置超时无法工作,因为我希望进程在这段时间内实际暂停/不继续任何操作 constnext=()=>console.log(“next”); /**暂停10秒钟*/ 下一个() 另外,如果我只想有条件地运行一个方法,每隔几秒钟或其他时间,我可以中止操作或继续。值得注意的是,我并不打算使用setInterval,因为在这种情况下,它实际上不会有条件

本质上,如何暂停javascript执行而不必在while循环之类的东西上浪费计算

例如,假设我只想在10秒后执行下一个函数,而不中断其他进程或浪费计算<代码>设置超时无法工作,因为我希望进程在这段时间内实际暂停/不继续任何操作

constnext=()=>console.log(“next”);
/**暂停10秒钟*/
下一个()
另外,如果我只想有条件地运行一个方法,每隔几秒钟或其他时间,我可以中止操作或继续。值得注意的是,我并不打算使用
setInterval
,因为在这种情况下,它实际上不会有条件地暂停实际的javascript执行

constnext=()=>console.log(“next”);
const start=新日期();
const startSeconds=now.getSeconds();
常量checkEvery=1;//秒
常数requiredDiff=10;//秒
常量检查器=()=>{
const now=新日期();
让secondsNow=now.getSeconds();
secondsNow
一个好方法是在管道中创建块。i、 e

process->pause->next
,这样您就可以知道程序流程在满足特定条件之前不会继续

您可以通过在线暂停操作来实现这一点

。。。
等待暂停();
...
其中,
pause
是指做出超时承诺或类似承诺的东西。我对这种方法不太了解,但它似乎比较复杂

另一种方法是使用while循环内联停止执行

。。。
//暂停10秒钟
让结果;
而(!result){result=checker()};
...
但正如您所提到的,这会浪费大量操作,并且会干扰后台的其他操作正常运行。另一件事是你不能只每隔一秒钟检查一次

我建议您改为执行以下操作:

const max=20;//最大递归调用数(即20秒后超时)
//checker是一个返回true或false的函数,与此实现无关
//timeout是再次运行检查程序之前等待的时间(以毫秒为单位)
//下一步是管道中要防止e的下一步
const pause=async(checker、timeout、next、calls=0)=>{
if(calls>max)return;//防止堆栈溢出
const result=await checker();//以防检查程序是异步的
//如果满足条件,则继续进行管道中的下一阶段
//如果不满足条件,则再次运行此方法以重新签入超时
结果?下一步():设置超时(()=>暂停(检查程序,超时,下一步,调用+1),超时)
}
//使用您提供的功能。。。
暂停(检查器,1000,下一个)

pause
仅在满足超时条件时执行操作,并且在满足检查条件之前,它不允许程序继续下一阶段。

这是否回答了您的问题?模式窗口或调试断点将停止所有进程的执行。但似乎你无法自动继续
sleep()
可以暂停当前进程。ja代码在哪里运行?浏览器、电子、节点等<代码>我希望进程在这段时间内暂停/不继续任何操作。还有哪些操作不应在暂停时运行?