JavaScript 等价于 SwingUtilities.invokeLater()

发布于 2024-12-28 09:28:07 字数 204 浏览 3 评论 0原文

Javascript 中是否有与 SwingUtilities 的 Java invokeLater() 方法等效的方法?

更新 1

那么,零延迟的 setTimeout() 会与 invokeLater() 完全相同吗?

Is there any equivalent of Java's invokeLater() method of SwingUtilities in Javascript?

UPDATE 1

So, will setTimeout() with zero delay do exactly the same as invokeLater()?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

誰ツ都不明白 2025-01-04 09:28:07
  1. 如果您想异步运行某些内容(稍后),请尝试 setTimeout()

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

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

另请参阅

  1. If you want to run something asynchronously (later), try setTimeout()

  2. JavaScript is single-threaded. If you want to run some time consuming (CPU-intensive) task outside of the event handler, you can do this using the technique above, however it will still consume event-handling thread (cause your UI to freeze).

It is generally a bad idea to run CPU-intensive tasks inside a browser (web workers might change this) since they share the same thread as event handlers, making them wait.

See also

夏尔 2025-01-04 09:28:07

尝试了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
    });
}

Tried setTimeout, it made the UI give an impression that it was working but somehow it took a long time. Something like this:

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

Tried Promise. outcome was simply better and faster. So the code is now like this:

for (...) {
    var promise = new Promise(function() {
        // show a loading icon
        // AJAX call
        // heavy DOM manipulation
    });
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文