【问题标题】:Suspending a js script until an event occurs暂停 js 脚本直到事件发生
【发布时间】:2021-03-15 15:30:04
【问题描述】:

有什么方法可以暂停一个 js 脚本,直到发生鼠标点击按钮之类的事件?我的意思是脚本应该在事件发生时暂停执行并再次恢复。我是 Javascript 的新手,即使在网上彻底搜索后也找不到解决方案!

【问题讨论】:

标签: javascript dom-events


【解决方案1】:

JS 是单线程的,多线程只能由 Web Workers 完成。据我所知。

但是,如果您只有一个要挂起的小脚本,您可以有一个全局变量/标志,并且只需在您的脚本中(我不知何故相信它是一个循环或事件驱动的函数)检查该标志。在这种情况下:

var flag = false;

...
if (flag) {
   do your code
} else {
   do nothing or return if in function
}

一旦你想继续,只需设置flag = true;

【讨论】:

  • 好的.. 谢谢.. 实际上我想做的是创建一个自定义警报框,它根据单击的按钮返回一个值,就像默认的 js 警报框一样。我有点不愿意使用全局变量来做到这一点,但看起来我没有其他直接的选择。无论如何,谢谢你的解决方案.. :)
  • NP。如果您的脚本处于循环中,您可以使用 setTimeout()。使用无限检查会导致 CPU 使用率达到 99%,因此您可以考虑在检查函数上使用 setTimeout 来查看标志是否已更改 :)
  • 我终于找到了一种以适当方式实现此警报框的方法。我只是在我的警报框函数中添加了一个回调函数。只要单击警报框中的任何按钮,就会使用被单击按钮的 id 调用该函数。
【解决方案2】:

JavaScript 是单线程的,在事件发生时没有抢占。这是不可能的。

【讨论】:

    【解决方案3】:

    如果您要暂停的是一个会一直循环的函数,我想出了一个很好的解决方案: https://stackoverflow.com/a/47841425/2884291

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-06
      • 1970-01-01
      • 2016-04-23
      • 2020-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多