2

在 Javascript中是否有任何等效于 Java 的invokeLater()方法?SwingUtilities

更新 1

那么,setTimeout()零延迟会和 完全一样invokeLater()吗?

4

2 回答 2

3
  1. 如果您想异步运行某些东西(稍后),请尝试setTimeout()

  2. JavaScript 是单线程的。如果您想在事件处理程序之外运行一些耗时(CPU 密集型)任务,您可以使用上述技术执行此操作,但它仍会消耗事件处理线程(导致您的 UI 冻结)。

在浏览器中运行 CPU 密集型任务通常是一个坏主意(网络工作者可能会改变这一点),因为它们与事件处理程序共享相同的线程,使它们等待。

也可以看看

于 2012-01-20T19:49:59.033 回答
0

试过了setTimeout,它让 UI 给人一种它正在工作的印象,但不知何故它花了很长时间。像这样的东西:

for (...) {
    setTimeout(function() {
        // show a loading icon
        // AJAX call
        // heavy DOM manipulation
    });
}

试过了Promise。结果只是更好更快。所以现在的代码是这样的:

for (...) {
    var promise = new Promise(function() {
        // show a loading icon
        // AJAX call
        // heavy DOM manipulation
    });
}
于 2021-04-26T09:00:10.017 回答