Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
与SwingUtilities.invokeLater()等价的JavaScript_Java_Javascript_Equivalent_Invokelater - Fatal编程技术网

与SwingUtilities.invokeLater()等价的JavaScript

与SwingUtilities.invokeLater()等价的JavaScript,java,javascript,equivalent,invokelater,Java,Javascript,Equivalent,Invokelater,Javascript中是否有Java的invokeLater SwingUtilities方法的等价物 更新1 那么,具有零延迟的setTimeout是否与invokeLater完全相同 如果您想稍后异步运行某些东西,请尝试 JavaScript是单线程的。如果您想在事件处理程序之外运行一些耗时的CPU密集型任务,您可以使用上面的技术来完成,但是它仍然会消耗事件处理线程,从而导致UI冻结 在浏览器中运行CPU密集型任务通常不是一个好主意,这可能会改变这一点,因为它们与事件处理程序共享同一线程,使

Javascript中是否有Java的invokeLater SwingUtilities方法的等价物

更新1

那么,具有零延迟的setTimeout是否与invokeLater完全相同

如果您想稍后异步运行某些东西,请尝试

JavaScript是单线程的。如果您想在事件处理程序之外运行一些耗时的CPU密集型任务,您可以使用上面的技术来完成,但是它仍然会消耗事件处理线程,从而导致UI冻结

在浏览器中运行CPU密集型任务通常不是一个好主意,这可能会改变这一点,因为它们与事件处理程序共享同一线程,使它们等待

另见 如果您想稍后异步运行某些东西,请尝试

JavaScript是单线程的。如果您想在事件处理程序之外运行一些耗时的CPU密集型任务,您可以使用上面的技术来完成,但是它仍然会消耗事件处理线程,从而导致UI冻结

在浏览器中运行CPU密集型任务通常不是一个好主意,这可能会改变这一点,因为它们与事件处理程序共享同一线程,使它们等待

另见 尝试设置超时时,它会让UI给人一种工作正常的印象,但不知何故它花费了很长时间。大概是这样的:

for (...) {
    setTimeout(function() {
        // show a loading icon
        // AJAX call
        // heavy DOM manipulation
    });
}
for (...) {
    var promise = new Promise(function() {
        // show a loading icon
        // AJAX call
        // heavy DOM manipulation
    });
}
我试着答应。结果只是更好更快。现在代码是这样的:

for (...) {
    setTimeout(function() {
        // show a loading icon
        // AJAX call
        // heavy DOM manipulation
    });
}
for (...) {
    var promise = new Promise(function() {
        // show a loading icon
        // AJAX call
        // heavy DOM manipulation
    });
}
尝试设置超时时,它会让UI给人一种工作正常的印象,但不知何故它花费了很长时间。大概是这样的:

for (...) {
    setTimeout(function() {
        // show a loading icon
        // AJAX call
        // heavy DOM manipulation
    });
}
for (...) {
    var promise = new Promise(function() {
        // show a loading icon
        // AJAX call
        // heavy DOM manipulation
    });
}
我试着答应。结果只是更好更快。现在代码是这样的:

for (...) {
    setTimeout(function() {
        // show a loading icon
        // AJAX call
        // heavy DOM manipulation
    });
}
for (...) {
    var promise = new Promise(function() {
        // show a loading icon
        // AJAX call
        // heavy DOM manipulation
    });
}

具有零延迟的setTimeout是否与invokeLater完全相同?@Dims,是的,它应该是我答案的一部分。具有零延迟的setTimeout是否与invokeLater完全相同?@Dims,是的,这应该是我答案的一部分。我认为你没有领会@Tomasz回答的要点:setTimeout永远不会像invokeLater那样做,因为它会在调用延迟函数时阻塞你的UI线程。我认为问题是它是否总是立即返回并直接从UI循环执行其函数参数,即使参数为零,有时也会立即执行该函数。@FrédéricHamidi Swing的调用程序也是如此。这也总是在UI线程上运行它的参数,但它保证总是立即返回并直接从事件循环执行。我认为您没有领会@Tomasz回答的要点:setTimeout永远不会像invokeLater那样做,因为它会在调用延迟函数时阻塞UI线程。我认为问题是它是否总是立即返回并直接从UI循环执行其函数参数,即使参数为零,或者有时会立即执行该函数。@FrédéricHamidi Swing的invokelator也是如此。它也总是在UI线程上运行它的参数,但它保证总是立即返回并直接从事件循环执行。