(q)
| 57 | } |
| 58 | |
| 59 | function start(q) { |
| 60 | while (q._start = q._waiting && q._active < q._size) { |
| 61 | var i = q._ended + q._active, |
| 62 | t = q._tasks[i], |
| 63 | j = t.length - 1, |
| 64 | c = t[j]; |
| 65 | t[j] = end(q, i); |
| 66 | --q._waiting, ++q._active; |
| 67 | t = c.apply(null, t); |
| 68 | if (!q._tasks[i]) continue; // task finished synchronously |
| 69 | q._tasks[i] = t || noabort; |
| 70 | } |
| 71 | } |
| 72 | |
| 73 | function end(q, i) { |
| 74 | return function(e, r) { |