在 Javascript中是否有任何等效于 Java 的invokeLater()
方法?SwingUtilities
更新 1
那么,setTimeout()
零延迟会和 完全一样invokeLater()
吗?
在 Javascript中是否有任何等效于 Java 的invokeLater()
方法?SwingUtilities
更新 1
那么,setTimeout()
零延迟会和 完全一样invokeLater()
吗?
如果您想异步运行某些东西(稍后),请尝试setTimeout()
JavaScript 是单线程的。如果您想在事件处理程序之外运行一些耗时(CPU 密集型)任务,您可以使用上述技术执行此操作,但它仍会消耗事件处理线程(导致您的 UI 冻结)。
在浏览器中运行 CPU 密集型任务通常是一个坏主意(网络工作者可能会改变这一点),因为它们与事件处理程序共享相同的线程,使它们等待。
试过了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
});
}