如何知道dart聚合物元素何时完全渲染

如何知道dart聚合物元素何时完全渲染,dart,dart-polymer,Dart,Dart Polymer,我创建了一个聚合元素,它从数据源url绘制数据表。代码在 我的目标是测量一旦新数据在客户机中可用,聚合物元素完全呈现自身所需的时间。我尝试了下列方法,但没有成功 /** *聚合物数据表元素。 */ @自定义标签“dennis-datatable” 类DataTable扩展了聚合关系{ .... .... @可观测整数numrows=0; @可观测整数numcols=0; @可观察列表cols; @可观察列表行; ..... ..... 开始渲染的日期时间; 日期时间停止渲染; Dat

我创建了一个聚合元素,它从数据源url绘制数据表。代码在

我的目标是测量一旦新数据在客户机中可用,聚合物元素完全呈现自身所需的时间。我尝试了下列方法,但没有成功

/** *聚合物数据表元素。 */ @自定义标签“dennis-datatable” 类DataTable扩展了聚合关系{ .... .... @可观测整数numrows=0; @可观测整数numcols=0; @可观察列表cols; @可观察列表行; ..... ..... 开始渲染的日期时间; 日期时间停止渲染; DataTable.created:super.created{ .... this.shadowRoot.addEventListenerload,prn_延迟; 获取数据; .... } 无效获取数据[计时器]{ .... ..... HttpRequest请求=新建HttpRequest;//创建新的XHR //添加在请求完成时调用的事件处理程序 request.onReadyStateChange.listen\u{ 如果request.readyState==HttpRequest.DONE&& request.status==200 | | request.status==0{ 更新_datarequest.responseText; } }; request.openmethod,dataSrc; ifmethod==POST{ request.sendjsonArgs;//执行异步POST }否则{ 请求发送; } } 无效prn_延迟事件e{ 如果start_render==null{return;} 停止渲染=new DateTime.now; int diff=停止渲染.millissecondssinceepoch-开始渲染.millissecondssinceepoch; 打印渲染时间=$diff ms; } 无效更新\u数据字符串jsonString{ Map data=JSON.decodejsonString; numrows=数据[numrows]; numcols=数据[numcols]; cols=数据[cols]; 行=数据[行]; this.start\u render=new DateTime.now; } } 我认为在超级电话后附加是最好的地方

附空{ 附后; //停止渲染 } 如果您想将start_render放入元素中,那么在super调用之前创建的元素应该是最好的位置

孔隙聚合{ //开始渲染 超级聚合 }
感谢Günter,我尝试添加了这些,但看起来enteredView只调用了一次,甚至在调用fetch_数据之前。数据更改时,不会调用enteredView方法。当聚合元素子树因数据更改而更改时,是否有调用的函数?抱歉,我错过了该要求。我不知道初始渲染后更新的回调。在这种情况下,MutationObserver可能会有所帮助,但可能会影响测量。我尝试使用MutationObserver计算时间,但它给我的结果是另一个没有聚合物的原始dart程序所用时间的10倍多:要生成具有相同数据的表,请将您的基准测试结果发布在上,我已经开始了一个新的这将表生成逻辑从模板移到了从PolymRelation类继承的类的私有dart方法。现在,渲染速度与原始dart程序相当。