Schlagwort: singleton

  • Sharepoint: custom javascript use singleton pattern to prevent multiple calls!

    Bei mir wird in Sharepoint 2016 eine Javascript-Function direkt aus der Masterpage heraus ausgerufen. Durch MDS und andere Dinge wird diese Funktion bei einem „Strg“+“F5“ reload dadurch bis zu 3x aufgerufen. Um das zu verhindern gibt es die Singleton-Pattern. Dis sollte so aussehen:

    function MySingletonClass () {
    
      if (arguments.callee._singletonInstance) {
        return arguments.callee._singletonInstance;
      }
    
      arguments.callee._singletonInstance = this;
    
      this.Foo = function () {
        // ...
      };
    }
    
    var a = new MySingletonClass();
    var b = MySingletonClass();
    console.log( a === b ); // prints: true

    Da das bei mir so nicht korrekt funktioniert hat (vermutlich habe ich den richtigen Aufruf einfach nicht hinbekommen, habe ich das so abgewandelt:

    // My simple "singleton Pattern"
    var sp2016InitFirstRun = true;
    
    // This function is called from at the bottom of my masterpage!!
    function $_global_sp2016_js_init() {
    
        // My simple "singleton Pattern"
        if (!sp2016InitFirstRun) 
        {   
            return;   
        }
        else 
        {  
            sp2016InitFirstRun = false;    
        };
        
        // The following code is only run once!!
     
        ...
     
    };
    
    $_global_sp2016_js_init()
    
    

    Funktioniert wie gewünscht: Der Code wird nur 1x gestartet. Egal wie oft Sharepoint die Function aufruft 😉

    Quelle: stackexchange.com