Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.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 有没有办法在';之后立即调用函数;简历布局';事件处理完成了吗?_Javascript_Extjs4.2 - Fatal编程技术网

Javascript 有没有办法在';之后立即调用函数;简历布局';事件处理完成了吗?

Javascript 有没有办法在';之后立即调用函数;简历布局';事件处理完成了吗?,javascript,extjs4.2,Javascript,Extjs4.2,我更改了几十个gridpanel列的宽度。我想在表演时展示一个面具 grid.setLoading(true); Ext.suspendLayouts(); // columns -- grid columns columns.forEach(function (column) { column.setWidth(...); }, this); // fires 'resumelayouts' event and immediately returns. Ext.resumeLayout

我更改了几十个gridpanel列的宽度。我想在表演时展示一个面具

grid.setLoading(true);
Ext.suspendLayouts();
// columns -- grid columns
columns.forEach(function (column) {
    column.setWidth(...);
}, this);
// fires 'resumelayouts' event and immediately returns.
Ext.resumeLayouts();
// performs before everything updates its layout, which takes 3-4 seconds.
grid.setLoading(false);

问题是,您最终会占用当前的“线程”,因此浏览器没有机会重新绘制。你可以这样做:

grid.setLoading(true);
setTimeout(function() {
    Ext.suspendLayouts();
    columns.forEach(function (column) {
        column.setWidth(...);
    }, this);
    Ext.resumeLayouts();
    grid.setLoading(false);
}, 1);

上述操作将放弃当前“线程”的控制,并允许在开始布局操作之前进行重新绘制。

我尝试了此操作。它不起作用,因为(正如我在评论中提到的)resumeLayouts()只是触发事件并返回控件。然后事件处理程序异步完成所有工作(我猜)。同时页面保持原来的宽度。如果你想让它齐平,那么你需要调用
Ext.resumealayouts(true)