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


Schreibe einen Kommentar Antworten abbrechen