我有一个聚合物元素,它通过“polymer-jsonp”从电子表格中获取数据。 数据到达后,我会更新元素的内容,并希望获得其显示的大小。
我希望在完全呈现图像和内容时调用异步。 (http://www.polymer-project.org/docs/polymer/polymer.html#asyncmethod)
如下所示调用刷新似乎返回没有内部图像的div的大小。 ... ...
researchChanged: function() {
if(this.research){
this.$.title.innerHTML = this.research.feed.entry[0].gsx$title.$t;
// call refresh
this.async(this.refresh);
}
}
延迟调用刷新似乎会返回预期的大小。
this.async(function() {
this.refresh();
}, null, 10);
这是预期的行为吗? 我们可以以某种方式最小化这种异步延迟吗?
由于
答案 0 :(得分:1)
所有async
都会等到JavaScript产生线程。无法保证完成任何特定的其他异步任务。
例如,无论何时创建<img>
元素,当该图片完全加载时都是不确定的(因为浏览器可能必须通过网络加载像素)。您必须聆听元素的onload
事件才能确定。
现在,有时我们会讨论微任务。 async
方法和微任务一起使用。考虑微任务的简单方法是在async
动作发生之前完成的所有事情。
例如,如果您调用async
,则可以确保在执行异步方法之前将发生所有数据传播(由于绑定和观察者)。突变观察者和未决事件也都在一个微任务中解决。
答案 1 :(得分:0)
您使用的是任何聚合物布局吗? 在我的情况下,我必须听一个布局事件(聚合物布局,聚合物网格布局),布局完成后会触发