src/cm/media/js/lib/yui/yui_3.10.3/docs/async-queue/index.html
author Yves-Marie Haussonne <ymh.work+github@gmail.com>
Fri, 09 May 2014 18:35:26 +0200
changeset 656 a84519031134
parent 525 89ef5ed3c48b
permissions -rw-r--r--
add link to "privacy policy" in the header test
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
525
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     1
<!DOCTYPE html>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     2
<html lang="en">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     3
<head>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     4
    <meta charset="utf-8">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     5
    <title>AsyncQueue</title>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     6
    <link rel="stylesheet" href="http://fonts.googleapis.com/css?family=PT+Sans:400,700,400italic,700italic">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     7
    <link rel="stylesheet" href="../../build/cssgrids/cssgrids-min.css">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     8
    <link rel="stylesheet" href="../assets/css/main.css">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     9
    <link rel="stylesheet" href="../assets/vendor/prettify/prettify-min.css">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    10
    <link rel="shortcut icon" type="image/png" href="../assets/favicon.png">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    11
    <script src="../../build/yui/yui-min.js"></script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    12
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    13
</head>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    14
<body>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    15
<!--
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    16
<a href="https://github.com/yui/yui3"><img style="position: absolute; top: 0; right: 0; border: 0;" src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png" alt="Fork me on GitHub"></a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    17
-->
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    18
<div id="doc">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    19
    <div id="hd">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    20
        <h1><img src="http://yuilibrary.com/img/yui-logo.png"></h1>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    21
    </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    22
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    23
        <a href="#toc" class="jump">Jump to Table of Contents</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    24
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    25
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    26
            <h1>AsyncQueue</h1>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    27
    <div class="yui3-g">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    28
        <div class="yui3-u-3-4">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    29
            <div id="main">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    30
                <div class="content"><div class="intro" class="component">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    31
    <p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    32
        AsyncQueue allows you create a chain of function callbacks executed via
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    33
        <code>setTimeout</code> that are guaranteed to run in order.  This can
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    34
        enable progressive incremental rendering of your UI so your users can
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    35
        begin to see and interact with your page while the infrastructure is
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    36
        being built.  Similarly, process-intensive operations that will lock up
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    37
        the UI while the JavaScript is being executed can be broken up into
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    38
        chunks, helping to keep your interface responsive.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    39
    </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    40
</div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    41
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    42
<h2 id="getting-started">Getting Started</h2>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    43
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    44
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    45
To include the source files for AsyncQueue and its dependencies, first load
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    46
the YUI seed file if you haven't already loaded it.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    47
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    48
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    49
<pre class="code prettyprint">&lt;script src=&quot;http:&#x2F;&#x2F;yui.yahooapis.com&#x2F;3.10.3&#x2F;build&#x2F;yui&#x2F;yui-min.js&quot;&gt;&lt;&#x2F;script&gt;</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    50
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    51
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    52
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    53
Next, create a new YUI instance for your application and populate it with the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    54
modules you need by specifying them as arguments to the <code>YUI().use()</code> method.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    55
YUI will automatically load any dependencies required by the modules you
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    56
specify.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    57
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    58
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    59
<pre class="code prettyprint">&lt;script&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    60
&#x2F;&#x2F; Create a new YUI instance and populate it with the required modules.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    61
YUI().use(&#x27;async-queue&#x27;, function (Y) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    62
    &#x2F;&#x2F; AsyncQueue is available and ready for use. Add implementation
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    63
    &#x2F;&#x2F; code here.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    64
});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    65
&lt;&#x2F;script&gt;</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    66
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    67
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    68
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    69
For more information on creating YUI instances and on the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    70
<a href="http://yuilibrary.com/yui/docs/api/classes/YUI.html#method_use"><code>use()</code> method</a>, see the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    71
documentation for the <a href="../yui/index.html">YUI Global Object</a>.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    72
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    73
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    74
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    75
<h2 id="using">Using AsyncQueue</h2>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    76
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    77
<h3 id="interacting">Creating and interacting with an AsyncQueue</h3>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    78
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    79
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    80
    AsyncQueues manage an array of callbacks that can be either simple function
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    81
    references or <a href="#callbacks">objects with specific keys</a>.  The
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    82
    primary methods on AsyncQueue are <code>add</code> and
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    83
    <code>run</code>.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    84
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    85
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    86
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    87
    When <code>run()</code> is invoked, each callback is executed in turn,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    88
    either synchronously or via <code>setTimeout</code> (depending on the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    89
    configuration of the callback or of the AsyncQueue instance).
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    90
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    91
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    92
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    93
    Queued callbacks can also be promoted to the top of the queue or removed
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    94
    from it.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    95
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    96
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    97
<pre class="code prettyprint">var q = new Y.AsyncQueue(callbackB, someTask, callbackA, callbackC);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    98
q.add(callbackD, callbackE); &#x2F;&#x2F; B, someTask, A, C, D, E
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    99
q.promote(callbackA);        &#x2F;&#x2F; A, B, someTask, C, D, E
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   100
q.remove(someTask);          &#x2F;&#x2F; A, B, C, D, E
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   101
q.run();                     &#x2F;&#x2F; execute A, then B, then C, then D, then E</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   102
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   103
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   104
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   105
<h4 id="stopping">Pausing and stopping an AsyncQueue</h4>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   106
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   107
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   108
    In addition to <code>run()</code>, AsyncQueue instances also have
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   109
    <code>pause()</code> and <code>stop()</code> methods to interrupt the run
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   110
    state.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   111
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   112
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   113
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   114
    To wait for an external process to complete, such as an XHR request, call
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   115
    <code>pause()</code>, then <code>run()</code> again to resume
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   116
    execution.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   117
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   118
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   119
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   120
    Call <code>stop()</code> to terminate execution and flush the AsyncQueue.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   121
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   122
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   123
<pre class="code prettyprint">&#x2F;&#x2F; Seed the instance with callbacks
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   124
var q = new Y.AsyncQueue(
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   125
    MyApp.doSomething,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   126
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   127
    &#x2F;&#x2F; The second callback will pause the Queue and send an XHR for data
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   128
    function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   129
        q.pause();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   130
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   131
        &#x2F;&#x2F; Send the asynchronous XHR
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   132
        Y.io(MyApp.getDataUri(), { on: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   133
            success : function (xid,o) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   134
                try {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   135
                    var data = Y.JSON.parse(o.responseText);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   136
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   137
                catch (e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   138
                    MyApp.showErrorStatus();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   139
                    q.stop();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   140
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   141
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   142
                MyApp.processData(data);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   143
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   144
                &#x2F;&#x2F; In the XHR callback, restart the AsyncQueue if successful
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   145
                q.run();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   146
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   147
            failure : function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   148
                MyApp.showErrorStatus();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   149
                &#x2F;&#x2F; Stop the AsyncQueue if anything goes wrong
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   150
                q.stop();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   151
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   152
        }});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   153
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   154
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   155
    &#x2F;&#x2F; The third callback will do partial updates until complete
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   156
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   157
        fn:    Y.bind(MyApp.updateUI,MyApp),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   158
        until: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   159
            return MyApp.remainingData &gt;= 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   160
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   161
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   162
    MyApp.doSomethingElse);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   163
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   164
q.run();</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   165
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   166
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   167
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   168
<h4 id="callbacks">About AsyncQueue callbacks</h4>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   169
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   170
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   171
    AsyncQueue callbacks can be simple function references or object literals
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   172
    with the following keys:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   173
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   174
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   175
<table>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   176
<thead>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   177
    <tr>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   178
        <th>property</th>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   179
        <th>description</th>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   180
        <th>default</th>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   181
    </tr>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   182
</thead>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   183
<tbody>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   184
    <tr>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   185
        <td><code>fn</code></td>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   186
        <td><strong>Required</strong>.  The callback function to execute.</td>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   187
        <td>(none)</td>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   188
    </tr>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   189
    <tr>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   190
        <td><code>context</code></td>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   191
        <td>The context from which to execute the callback function.</td>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   192
        <td>The AsyncQueue instance</td>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   193
    </tr>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   194
    <tr>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   195
        <td><code>args</code></td>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   196
        <td>Array of arguments that will be passed as individual args to the callback function.</td>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   197
        <td>(none)</td>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   198
    </tr>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   199
    <tr>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   200
        <td><code>timeout</code></td>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   201
        <td>Millisecond delay before each execution of this callback.  Set to -1 to trigger synchronous execution.</td>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   202
        <td>10</td>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   203
    </tr>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   204
    <tr>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   205
        <td><code>iterations</code></td>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   206
        <td>The number of times to execute this callback before shifting it from the queue.</td>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   207
        <td>1</td>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   208
    </tr>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   209
    <tr>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   210
        <td><code>until</code></td>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   211
        <td>A function that will return <code>true</code> when the current callback can be shifted from the queue.</td>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   212
        <td>a function that tests against <code>iterations</code></td>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   213
    </tr>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   214
    <tr>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   215
        <td><code>id</code></td>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   216
        <td>Name given to this callback for ease of reference.</td>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   217
        <td>(none)</td>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   218
    </tr>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   219
    <tr>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   220
        <td><code>autoContinue</code></td>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   221
        <td>Set to <code>false</code> to automatically <code>pause()</code> after this callback.</td>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   222
        <td>true</td>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   223
    </tr>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   224
</tbody>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   225
</table>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   226
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   227
<h4 id="defaults">Class- and instance-level callback defaults</h4>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   228
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   229
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   230
    AsyncQueue provides three places to configure callbacks (in decreasing
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   231
    precedence order):
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   232
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   233
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   234
<ol>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   235
    <li>The callback object</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   236
    <li>The AsyncQueue instance's <code>defaults</code> collection</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   237
    <li>The class static <code>defaults</code> collection</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   238
</ol>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   239
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   240
<pre class="code prettyprint">&#x2F;&#x2F; All AsyncQueue instances will execute all callbacks synchronously by default
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   241
Y.AsyncQueue.defaults.timeout = -1;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   242
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   243
var q = new Y.AsyncQueue();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   244
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   245
&#x2F;&#x2F; run every callback in this instance twice before moving to the next callback
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   246
q.defaults.iterations = 2;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   247
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   248
q.add(functionA,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   249
      {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   250
        fn: functionB,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   251
        timeout: 100 &#x2F;&#x2F; this callback will be executed asynchronously
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   252
      });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   253
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   254
&#x2F;&#x2F; functionA executes twice immediately, then after 100 milliseconds functionB
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   255
&#x2F;&#x2F; is executed, then after another 100ms functionB is executed again.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   256
q.run();</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   257
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   258
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   259
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   260
<h4 id="sync">Synchronous mode for callback execution</h4>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   261
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   262
    One of the main goals of the AsyncQueue is to provide a mechanism to
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   263
    prevent process-intensive operations from locking up the UI.  By default,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   264
    AsyncQueue callbacks are executed via <code>setTimeout</code> to facilitate
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   265
    this.  The <code>timeout</code> configuration accepts -1 as a value to
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   266
    trigger synchronous callback execution.  Use this setting with caution.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   267
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   268
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   269
<h4 id="chaining">About timeout chaining</h4>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   270
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   271
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   272
    Timeout chaining is a strategy to address the lack of <a
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   273
    href="http://en.wikipedia.org/wiki/Thread_(computer_science)">multithreading</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   274
    in JavaScript.  When complex or iterative code executes it can cause the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   275
    page to stop responding until the running JavaScript process completes; it
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   276
    can also cause "non-responsive script" or "long-running script" dialogs to
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   277
    be presented to the user.  Both outcomes are detrimental to user
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   278
    experience.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   279
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   280
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   281
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   282
    To address this, the operation can be split into chunks, and
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   283
    <code>setTimeout</code> can be used to yield control back to other
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   284
    operations between each chunk.  A common use case for this technique is to
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   285
    allow browser reflows to display DOM modifications incrementally while
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   286
    batches of work are being done in JavaScript.  For iterative functions, the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   287
    code can execute a portion of the overall work, then schedule itself to run
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   288
    via <code>setTimeout</code>.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   289
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   290
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   291
<p>The basic form of an iterative timeout chain is:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   292
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   293
<pre class="code prettyprint">(function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   294
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   295
    &#x2F;* do a chunk of the work *&#x2F;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   296
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   297
    if (&#x2F;* process completion check fails *&#x2F;) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   298
        &#x2F;&#x2F; Schedule myself for re-execution, picking up where I left off
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   299
        setTimeout(arguments.callee,0);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   300
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   301
})();</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   302
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   303
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   304
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   305
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   306
    When dealing with <code>setTimeout</code>, it's easy to introduce race
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   307
    conditions.  Because all timeouts are scheduled against the same timer and
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   308
    only one can run at a time, when two timeouts are separately scheduled, it
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   309
    is possible for them to execute out of intended order.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   310
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   311
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   312
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   313
    AsyncQueue supports both "chunked operations" (by specifying callback
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   314
    timeouts) and "iterative operations" (by specifying callback
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   315
    <code>iterations</code> or <code>until</code> functions).  Furthermore,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   316
    AsyncQueue manages the callback sequence and can therefore guarantee the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   317
    execution order, so you avoid race conditions.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   318
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   319
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   320
<h4 id="events">Exposed events</h4>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   321
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   322
    AsyncQueue is based on EventTarget and instances emit the following events
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   323
    throughout their lifecycle:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   324
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   325
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   326
<table>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   327
<thead>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   328
    <tr>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   329
        <th>Event</th>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   330
        <th>When</th>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   331
        <th>Event payload</th>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   332
    </tr>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   333
</thead>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   334
<tbody>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   335
    <tr>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   336
        <td><code>add</code></td>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   337
        <td>Callbacks are added to the AsyncQueue.</td>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   338
        <td><code>{ callbacks: (Array of callbacks added) }</code></td>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   339
    </tr>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   340
    <tr>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   341
        <td><code>promote</code></td>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   342
        <td>A callback is promoted.</td>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   343
        <td><code>{ callback : (callback) }</code></td>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   344
    </tr>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   345
    <tr>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   346
        <td><code>remove</code></td>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   347
        <td>A callback is removed.</td>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   348
        <td><code>{ callback : (callback) }</code></td>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   349
    </tr>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   350
    <tr>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   351
        <td><code>execute</code></td>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   352
        <td>A callback is executed.</td>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   353
        <td><code>{ callback : (callback) }</code></td>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   354
    </tr>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   355
    <tr>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   356
        <td><code>shift</code></td>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   357
        <td>A callback is shifted from the AsyncQueue.</td>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   358
        <td><code>{ callback : (callback) }</code></td>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   359
    </tr>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   360
    <tr>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   361
        <td><code>complete</code></td>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   362
        <td>After the last callback is finished executing.  <em>NOT</em> fired after <code>stop()</code>.</td>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   363
        <td>(none)</td>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   364
    </tr>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   365
</tbody>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   366
</table>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   367
</div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   368
            </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   369
        </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   370
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   371
        <div class="yui3-u-1-4">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   372
            <div class="sidebar">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   373
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   374
                    <div id="toc" class="sidebox">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   375
                        <div class="hd">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   376
                            <h2 class="no-toc">Table of Contents</h2>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   377
                        </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   378
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   379
                        <div class="bd">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   380
                            <ul class="toc">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   381
<li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   382
<a href="#getting-started">Getting Started</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   383
</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   384
<li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   385
<a href="#using">Using AsyncQueue</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   386
<ul class="toc">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   387
<li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   388
<a href="#interacting">Creating and interacting with an AsyncQueue</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   389
<ul class="toc">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   390
<li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   391
<a href="#stopping">Pausing and stopping an AsyncQueue</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   392
</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   393
<li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   394
<a href="#callbacks">About AsyncQueue callbacks</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   395
</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   396
<li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   397
<a href="#defaults">Class- and instance-level callback defaults</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   398
</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   399
<li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   400
<a href="#sync">Synchronous mode for callback execution</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   401
</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   402
<li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   403
<a href="#chaining">About timeout chaining</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   404
</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   405
<li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   406
<a href="#events">Exposed events</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   407
</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   408
</ul>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   409
</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   410
</ul>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   411
</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   412
</ul>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   413
                        </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   414
                    </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   415
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   416
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   417
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   418
                    <div class="sidebox">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   419
                        <div class="hd">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   420
                            <h2 class="no-toc">Examples</h2>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   421
                        </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   422
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   423
                        <div class="bd">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   424
                            <ul class="examples">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   425
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   426
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   427
                                        <li data-description="This example employs AsyncQueue to incrementally construct an application interface; this illustrates the approach you&#x27;d take to allow chunked rendering of the UI in a process-intensive application.">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   428
                                            <a href="queue-app.html">Building a UI with AsyncQueue</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   429
                                        </li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   430
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   431
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   432
                            </ul>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   433
                        </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   434
                    </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   435
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   436
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   437
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   438
            </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   439
        </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   440
    </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   441
</div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   442
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   443
<script src="../assets/vendor/prettify/prettify-min.js"></script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   444
<script>prettyPrint();</script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   445
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   446
<script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   447
YUI.Env.Tests = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   448
    examples: [],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   449
    project: '../assets',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   450
    assets: '../assets/async-queue',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   451
    name: 'async-queue',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   452
    title: 'AsyncQueue',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   453
    newWindow: '',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   454
    auto:  false 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   455
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   456
YUI.Env.Tests.examples.push('queue-app');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   457
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   458
</script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   459
<script src="../assets/yui/test-runner.js"></script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   460
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   461
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   462
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   463
</body>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   464
</html>