Mise à jour: 09/12/2021
Un autre moyen suggéré dans le chapitre 15 Handling Events du livre Eloquent Javascript.
1 2 3 4 5 6 7 8 9 |
<button>Act-once button</button> <script> let button = document.querySelector("button"); function once() { console.log("Done."); button.removeEventListener("click", once); } button.addEventListener("click", once); </script> |
js/utils.js
:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
const executeOnlyOnce = ( function( callbackFunction ) { let alreadyExecuted = false; return function( callbackFunction ) { if ( !alreadyExecuted ) { alreadyExecuted = true; // Execute only once! callbackFunction(); } }; })(); export { executeOnlyOnce } |
1 2 3 4 5 6 7 8 |
import { executeOnlyOnce } from './js/utils'; let hadPreviousBreakpointChanges = false; console.log( hadPreviousBreakpointChanges ); // "false" const onBreakpointChange = function(){ hadPreviousBreakpointChanges = true; }; |
1 2 |
executeOnlyOnce(onBreakpointChange); console.log(hadPreviousBreakpointChanges); // "true" |