Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.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/3/html/72.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
Javascript DOM呈现是异步进行的吗?_Javascript_Html_Dom_Asynchronous_Svg - Fatal编程技术网

Javascript DOM呈现是异步进行的吗?

Javascript DOM呈现是异步进行的吗?,javascript,html,dom,asynchronous,svg,Javascript,Html,Dom,Asynchronous,Svg,我有一些代码在SVG上鼠标滚动的回调中被触发 这对SVG进行了一些转换(用于放大和缩小到某个点)。 对于一些大型SVG来说,性能很慢,我想对此进行改进 我试图测量从滚动开始到渲染完成所花费的时间。 我有以下代码 var timerStart = Date.now(); //some calculations svgElement.setAttribute("transform",newTransform); console.log("rendered:", Date.now()-timerSta

我有一些代码在SVG上鼠标滚动的回调中被触发 这对SVG进行了一些转换(用于放大和缩小到某个点)。 对于一些大型SVG来说,性能很慢,我想对此进行改进 我试图测量从滚动开始到渲染完成所花费的时间。 我有以下代码

var timerStart = Date.now();
//some calculations
svgElement.setAttribute("transform",newTransform);
console.log("rendered:", Date.now()-timerStart);
但是,我可以看到,即使在打印日志之后,渲染也会发生。 我假设DOM操作是同步的(javascript运行时是单线程的),似乎不是这样的?是否存在异步进行渲染的渲染队列?
在这种情况下,如何准确测量渲染的性能?

渲染不仅仅是异步发生的,它是并发发生的(即在另一个线程中)。因此,您无法从JavaScript线程准确地测量它


但是,大多数现代浏览器都允许从其提供的开发人员工具进行评测,以查看每次渲染/布局/回流的原因以及如何优化代码。

渲染是异步进行的。虽然可以使用浏览器内置的调试工具,但无法从脚本中对其进行测量。
trasnform
我没有尝试过使用它,但可能可以解决您的问题。它应该在重新油漆之前执行。@epascarello谢谢你的更正@谢谢,我会试试的,你能提供一些关于这个话题的信息吗?嗨,谢谢你的回答,你能提供一些信息吗?我想了解更多关于这个话题的信息。我发现这个源代码说DOM不是线程安全的,我想知道如果是这样的话,渲染是在渲染树(我假设它应该是线程安全的)上工作的,而不是在DOM树上工作的,那么渲染是如何并发发生的呢?