As I dive deeper into Ext I keep bumping into code that sets a delay parameter or attribute (typically around 100ms). Is the usage of delay a workaround for some internal browser render propagation problem or just a UI fine tuning concept to make the Ext UI feel better?
For example when configuring a context menu on an Ext Tree why would I need to introduce a 100ms delay on a menu item click event?
The example you've given is probably just for a visual delay.
A more useful example is when you're catching the window resize event. What I've done in an application is when the window resizes, I also need to resize a few grids. If you catch the resize event with no delay, the window hasn't usually had time to resize by the time you call your grid resize method, so they stay the same size. Add a 100ms delay and the problem goes away.
This is sometimes used to handle the fact that some dom updates are async and the delay gives them a chance to complete before something else is done with that element.
Interesting... Given the case of a simple Ext application that is rendered only through Ext component calls are all DOM sync issues handled internally by Ext? Or put another way, are there outstanding DOM-sync issues that an Ext developer should remain alert to?
I would think that as you long as you use Ext methods to manipulate the dom, you'll be OK. You could run into problems if you try to directly access/manipulate the dom object yourself in the midst of doing other Ext operations. That being said, I can't tell you which operations are async or not. Jack talked about this in a thread some time ago, maybe he'll chime in at some point with a reference to specific operations.