Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

110
Views
Run Javascript code only once, and with only one spot to put the code

I have an interceptor function that I can put some javascript code into (for swagger ui). I only have one place to put in javascript code and it will be re-run frequently. I need to add a mutating observer in there, and have it only be setup one time.

There are many examples of how to do a Javascript method that will allow your code to be only run once. Here is a popular example: Function in JavaScript that can be called only once

But it assumes that you have somewhere to put the function where it will only be called once.

Is there a way to have my javascript code (not necessarily a function) only be run once? (So I don't end up setting up a bunch of mutating observers?)


To illustrate with an example, here is the code from the question I linked to, but copied in twice to show that it would be run many times:

var something = (function() {
    var executed = false;
    return function() {
        if (!executed) {
            executed = true;
            console.log("hello");
        }
    };
})();

something(); // "do something" happens
something(); // nothing happens

var something = (function() {
    var executed = false;
    return function() {
        if (!executed) {
            executed = true;
            console.log("hello");
        }
    };
})();

something(); // "do something" happens
something(); // nothing happens

The output of this code is:

hello
hello

Because the function is initalized twice, the call to console.log happens twice.

I need some way to have my code only happen once, with only one place to declare it.

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

For browser environment, you can use localStorage to set the value.

// make sure to initialize with true in your main entry point, otherwise the function would not run for the first time
localStorage.setItem('run-function', true);


const run = localStorage.getItem('run-function');

function test() {
    if (run) {
        console.log('ran function');
        // ran once, set the value to false to prevent dupes
        localStorage.setItem('run-function', false);
    } else {
        console.log('function already called once, exiting');
    }
}


test();

if you're on node.js environment you can make use of the global variable

// make sure to initialize with true in your main entry point, otherwise the function would not run for the first time

global.run_function = true;



function test() {
    if (global.run_function) {
        console.log('ran function');
        global.run_function = false;
    } else {
        console.log('function already called once, exiting');
    }
}


test();

about 4 years ago · Juan Pablo Isaza Report

0

What about storing executed value in document ... it is created once at execution ... it could be stored in window (i.e. global var) but I think it is better to be kept in document. I'm not familiar with swagger but docuument should always exits I think. Storing it in localStorage will keep it longer than you may need and you should reset it on each run.

var something = (function() {
    return function() {
        if (!document.executed) {
            document.executed = true;
            console.log("hello");
        }
    };
})();

something(); // "do something" happens
something(); // nothing happens

var something = (function() {
    return function() {
        if (!document.executed) {
            document.executed = true;
            console.log("hello");
        }
    };
})();

something(); // "do something" happens
something(); // nothing happens

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!