title: Why do jQuery show() parameters not delay before calling the `complete` function?
body: <p>The <a href="http://api.jquery.com/show/" rel="nofollow noreferrer">jQuery API documentation for <code>show()</code></a> states that as of jQuery 1.4.3, one can call <code>.show()</code> like so:</p>
  
  <pre><code>.show( [duration ] [, easing ] [, complete ] )
  </code></pre>
  
  <p>With the arguments being:</p>
  
  <blockquote>
    <ul>
    <li><code>duration</code> (default: 400): A string or number determining how long the animation will run.</li>
    <li><code>easing</code> (default: swing): A string indicating which easing function to use for the transition.</li>
    <li><code>complete</code>: A function to call once the animation is complete.</li>
    </ul>
  </blockquote>
  
  <p>I don't need easing, so I just call this version:</p>
  
  <pre><code>.show( [duration ] [, complete ] )
  </code></pre>
  
  <p>I have one function which is supposed to show a div, wait 5 seconds, then fade out over 500ms.</p>
  
  <p>I have tried this:</p>
  
  <pre><code>  $('#some_div').show( {
        duration: 5000,
        complete: function() { fadeOutHelper(500); }
    } );
  </code></pre>
  
  <p>And this:</p>
  
  <pre><code>$('#some_div').show(5000, function() { fadeOutHelper(500); } );
  </code></pre>
  
  <p>And in neither case will <code>show()</code> actually wait 5000ms before calling the helper function.</p>
  
  <p>I found a work-around on StackOverflow using <code>setTimeout()</code>: <a href="https://stackoverflow.com/questions/3428766/jquery-show-for-5-seconds-the-hide">jQuery show for 5 seconds then hide</a></p>
  
  <pre><code>$('#some_div').show();
  setTimeout(function() { fadeOutHelper(500); }, 5000);
  </code></pre>
  
  <p>Although I have a work-around, I would like to understand how I am misunderstanding some very simple function arguments in the jQuery <code>show()</code> docs.</p>