Soms krijg ik een idee en wil ik gelijk testen hoe het zou werken. Zo ook nu. Het is het duidelijkst als ik gewoon de code plaats en daarna kort toelicht.
Nu, het gaat me niet om de functionaliteit; om te doen wat ik hier doe zijn er genoeg alternatieven. Wat me echter opvalt, is dat de debug 'here' bij mij ALTIJD geprint wordt, ook al staat de setTimeout op 0.
Dit betekent bij mij dat de code na de setTimeout altijd eerder wordt uitgevoerd dan de function call in de setTimeout, ook al staat er dat 'ie eigenlijk geen delay heeft. Zelf zou ik verwachten dat dit wat meer random zou zijn. De ene keer is de timeout sneller, de andere keer niet.
Mijn vraag nu dus: heeft iemand een idee hoe setTimeout zich nou gedraagd achter de schermen? Waarom runt het altijd later?
Hopelijk ben ik een beetje duidelijk
Ben benieuwd!
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| function runme( ) { var func = arguments.callee; var callback; window.setTimeout( function( ) { // Normaal hier iets doen // Daarna checken of er een onComplete callback is en uitvoeren if( func.callback ) func.callback( ); }, 0 ); return { then: function( callback ) { func.callback = callback; } }; } // call runme, en chain een callback functie runme().then( function( ) { debug( 'here' ); } ); |
Nu, het gaat me niet om de functionaliteit; om te doen wat ik hier doe zijn er genoeg alternatieven. Wat me echter opvalt, is dat de debug 'here' bij mij ALTIJD geprint wordt, ook al staat de setTimeout op 0.
Dit betekent bij mij dat de code na de setTimeout altijd eerder wordt uitgevoerd dan de function call in de setTimeout, ook al staat er dat 'ie eigenlijk geen delay heeft. Zelf zou ik verwachten dat dit wat meer random zou zijn. De ene keer is de timeout sneller, de andere keer niet.
Mijn vraag nu dus: heeft iemand een idee hoe setTimeout zich nou gedraagd achter de schermen? Waarom runt het altijd later?
Hopelijk ben ik een beetje duidelijk