> On 2011-08-16 17:24:01, Henry Saputra wrote:
> > http://svn.apache.org/repos/asf/shindig/trunk/features/src/main/javascript/features/core.util.onload/onload.js,
> >  line 47
> > <https://reviews.apache.org/r/1525/diff/1/?file=32902#file32902line47>
> >
> >     Why does the definition registerOnLoadHandler here?
> 
> Dan Dumont wrote:
>     It is redefined to immediately execute any onload callbacks.
>     
>     The sequence of events is:
>     1) Gadget starts loading and registers some onload.
>     2) Gadget fires an async operation that takes an unknown amount of time
>     3) Open Social api is ready and runOnLoadHandlers is called.
>     4) Gadget's async operation is done.  To be safe it uses 
> registerOnLoadHandler to make sure everything is all set (in case the async 
> operation beat the runOnLoadHandlers call)
>     
>     At this point, before the change, the call to registerOnLoadHandler would 
> never result in the callback being executed.
>     This change makes it so once runOnLoadHandlers is called, 
> registerOnLoadHandler executes the callback immediately.
> 
> Henry Saputra wrote:
>     In step 2, the async operation is called outside of the function 
> registered with registerOnLoadHandler?
>     
>     So in step 4, why would the gadget's async handler call 
> registerOnLoadHandler?
> 
> Dan Dumont wrote:
>     This is important with some of the changes in dojo 1.7 where the 
> bootstrap may be very small and included in the gadget page but 
> asynchronously load more code in.  When the application is ready, it should 
> be able to rely on registerOnLoadHandler to provide them a means of executing 
> gadget code safely.
>     
>     Really, the gadget should be able to do any non-gadget-api async 
> operations while the page is loading.  To sync everything back up, the gadget 
> should be able to rely on registerOnLoadHandler executing their callbacks 
> that rely on gadget-api operations so that we don't introduce race conditions.

+1 for this change.  I think this is pretty much how all of the "ready" 
functions I've seen in other JS libraries work (dojo, jquery, ...) -- in any of 
those libraries registering code after the trigger has already fired results in 
immediate execution, so I think this is probably something people would expect.


- Jesse


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/1525/#review1479
-----------------------------------------------------------


On 2011-08-17 15:18:59, Dan Dumont wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/1525/
> -----------------------------------------------------------
> 
> (Updated 2011-08-17 15:18:59)
> 
> 
> Review request for shindig.
> 
> 
> Summary
> -------
> 
> If gadgets.util.registerOnLoadHandler was called after the runOnLoad 
> counterpart was called, the callback would sit in the array... forever alone.
> 
> 
> This addresses bug SHINDIG-1578.
>     https://issues.apache.org/jira/browse/SHINDIG-1578
> 
> 
> Diffs
> -----
> 
>   
> http://svn.apache.org/repos/asf/shindig/trunk/features/src/main/javascript/features/core.util.onload/onload.js
>  1157211 
> 
> Diff: https://reviews.apache.org/r/1525/diff
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Dan
> 
>

Reply via email to