This proposal is similar to the callbacks that Prototype's Ajax.Request makes available. Instead of a "done" event, it provides the callback "onComplete": <a href="http://prototypejs.org/api/ajax/options">
http://prototypejs.org/api/ajax/options</a><br><br><div><span class="gmail_quote">On 8/26/07, <b class="gmail_sendername">Garrett Smith</b> <<a href="mailto:dhtmlkitchen@gmail.com">dhtmlkitchen@gmail.com</a>> wrote:
</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">I've noticed a case when developing Ajax apps that I often end up<br>duplicating a call to hide "
loading.gif" (for example) when the call<br>is over.<br>Progress Events<br><a href="http://dev.w3.org/cvsweb/~checkout~/2006/webapi/progress/Progress.html?rev=1.16&content-type=text/html;%20charset=iso-8859-1#XHR">
http://dev.w3.org/cvsweb/~checkout~/2006/webapi/progress/Progress.html?rev=1.16&content-type=text/html;%20charset=iso-8859-1#XHR</a><br><br>Helps facilitate that, however, I think I see a way that the use case<br>could be better-accomodated. Here is a simple use-case that
<br>illustrates the problem:<br><br>Author loads a large picture.<br>While the picture is loading, the user sees a progress bar.<br>When the call is done, the progress bar is hidden.<br><br>Notice, the use case is not, "when the picture is loaded, remove the
<br>progress bar." Instead, it reads: "When the call is done, the progress<br>bar is hidden."<br><br>In this use case, the progress bar must be removed, whether the call<br>is successful or not. If the call fails, the call is aborted, or the
<br>call is successful, the progress bar is hidden.<br><br>To fulfill the use case, the author creates a function callFinished,<br>for example:<br><br>function callFinished( progressEvent ) {<br>  // Remove loader bar.<br>
}<br><br>Using the current proposal, the author adds an EventListener for load,<br>to hide the progress bar when the image is done loading. However, the<br>author must also add EventListeners for failure and success Events to
<br>remove the loader bar in those cases now.<br><br>==========================================<br>function showImage(imageHref) {<br>...<br><br>// remove the progress bar when done.<br>       image.addEventListener("load", hideProgressBar, false);
<br>       image.addEventListener("error", hideProgressBar, false);<br>       image.addEventListener("abort", hideProgressBar, false);<br>}<br>==========================================<br><br>This is somewhat verbose. Clearly, the author is forced to repeat
<br>himself when all he really wants to do is hide the progress bar after<br>the call is done.<br><br>I see this as being analogous to "hang up the phone after the call is<br>done." We all know how that works. It doesn't matter if the other
<br>person hung up on rudely, we both said goodbye, the line got cut off,<br>the phone service was down -- the call is over. (digression)<br><br>It would be useful to have a "done" event.<br><br>The revised example, with a hypothetical "done" event:
<br><br><br>==========================================<br>function showImage( imageHref ) {<br>       ...<br>// remove the progress bar when done.<br>       image.addEventListener("done", hideProgressBar, false);
<br>}<br>==========================================<br><br><br>Garrett<br></blockquote></div><br>