javascript - order in triggering events and functions -
is there way perform in order?
html:
<button type="button">click!</button> js:
window.addeventlistener("hashchange", function() { eventfunction(); }, false); document.queryselector('button').addeventlistener('click', function() { location.hash = "changed"; otherfunction(); }); function eventfunction() { console.log('first'); } function otherfunction() { console.log('second'); } here jsfiddle: https://jsfiddle.net/texzj2uv/1/
just call otherfunction asynchronously:
window.addeventlistener("hashchange", function() { eventfunction(); }, false); document.queryselector('button').addeventlistener('click', function() { location.hash = "changed"; settimeout(otherfunction, 0); }); function eventfunction() { console.log('first'); } function otherfunction() { console.log('second'); } <button type="button"> click! </button> what happens when call location.hash = "changed"; browser pushes event handler on queue , continues call stack. if call otherfunction() right away, on call stack , called before on queue. calling settimeout(otherfunction, 0) pushes on queue behind event handler.
there great video explaining javascript loop, call stack , queue: philip roberts: heck event loop anyway? | jsconf eu 2014
Comments
Post a Comment