Chapter 2 - closures 2
by Denise Nepraunig
HTML
<link rel="stylesheet" href="http://code.jquery.com/qunit/qunit-1.14.0.css">
<script src="http://code.jquery.com/qunit/qunit-1.14.0.js"></script>
<div id="qunit"></div>
<div id="qunit-fixture"></div>
JavaScript
// Programming JavaScript Applications
// Chapter 2
// closures 2
(function () {
var arr = [],
count = 1,
delay = 20,
timer,
complete;
timer = function timer() {
setTimeout(function inner() {
arr.push(count);
if (count < 3) {
count += 1;
timer();
} else {
complete();
}
}, delay);
};
QUnit.asyncTest("Closure with setTimeout.", function(assert) {
complete = function complete() {
QUnit.equal(arr.join(","), "1,2,3", "arr should be [1,2,3]");
start();
};
timer();
QUnit.equal(arr.length, 0,
"arr should be empty until first timeout");
});
}());