JavaScript等效于SwingUtilities.invokeLater()

时间:2012-01-20 19:47:14

标签: java javascript equivalent invokelater

Javascript中是否存在Java invokeLater() SwingUtilities方法的等效方法?

更新1

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

2 个答案:

答案 0 :(得分:4)

  1. 如果您想以异步方式运行某些内容(以后),请尝试setTimeout()

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

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

    另见

答案 1 :(得分: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
    });
}