2017-04-20 1 views
1

Ich versuche benutzerdefinierte Messdaten zu speichern - wie lange Benutzer auf der mu-Seite waren - mit Application Insights. Ich schrieb folgenden Code (es ist ein Teil):Ereignisse vor dem Entladen in Application Insights in JavaScript speichern

 var start = new Date(); 

     var recordMetrics = function() { 
      var end = new Date(); 
      var timeSpentTotal = (end.getTime() - start.getTime())/1000; 
      if (window.appInsights) { 
       window.appInsights.trackMetric("timeSpentTotal", timeSpentTotal); 
       window.appInsights.flush(); 
       console.log("Sent data with timeSpent"); 
      } 

     } 
     window.addEventListener("beforeunload", 
      function (e) { 
       recordMetrics(); 

      }); 

Aber jede Anfrage nach der Spülung wird abgebrochen. Ich bin mir fast sicher, dass dies daran liegt, dass App Insights eine asynchrone AJAX-Anfrage erstellt. Kann ich das irgendwie auf synchron umstellen? Oder mache ich etwas völlig falsch?

Antwort

0

Ich würde Ihnen empfehlen, die folgende Codezeile entfernen: window.appInsights.flush();

Dieses auf dem API reference beschrieben.

flush()

sofort alle Telemetrie-Warteschlange senden. Synchron.

Normalerweise müssen Sie dies nicht verwenden, da dies automatisch bei Fensterabschluss geschieht.

+0

Ohne diese Zeile funktioniert es auch nicht. –

Verwandte Themen