Jump to content

Need help with while-loop


Mart

Recommended Posts

Hi!

 

I'm trying to build a loop, that looks for certain functions to be loaded, and then using one of them (window.mouseflow.getSessionId) to fetch a value, to be send to the other (s.tl). The getting and the sending works.

 

The issue is this:

 

When the script is loaded, it looks for the functions. It should then try to sending them every 10 ms, and do so 50 times. I want this, because the functions might not be loaded when this script runs.

 

I've added a console.log. If the functions are not there, I would expect it to print out the numbers 50-1. It does not, so I'm suspecing it only tries once. Can any of you tell me why?

 

var tries=50;

function trySending () {
   s.tl(this, 'o', 'mouseflow sessionID', {
linkTrackVars: 'prop50',
prop50: window.mouseflow.getSessionId()
   });}

      
      
 while (tries > 0)
   if (window.mouseflow.getSessionId && s.tl && tries > 0){
setTimeout(trySending(), 10);
        {break;}
      

      } else if (tries > 0); {
     tries--;
console.log(tries) 
      
}

 

Link to comment
Share on other sites

Hi Again.

 

I found one issue. A missing set of { }

 

The script now looks like this - still do as I expect, though. It prints out a number about somwhere between 60 and 80, so I still need a helping hand I think.

var tries=50;

function trySending () {
   s.tl(this, 'o', 'mouseflow sessionID', {
linkTrackVars: 'prop50',
prop50: window.mouseflow.getSessionId()
   });}

      
      
while (tries > 0){
   if (window.mouseflow.getSessionId && s.tl && tries > 0 && window.mouseflow.getSessionId !== -1){
setTimeout(trySending(), 10);
        {break;}
      

      } else if (tries > 0); {
     tries--;
console.log(tries) ;
      
      }}
Link to comment
Share on other sites

Google Analytics? I don't understand your fancy "truthy" conditionals. When is this true?

 if (window.mouseflow.getSessionId && s.tl && tries > 0 && window.mouseflow.getSessionId !== -1){

Also...

 

setTimeout(function_name_without_parens, delay)

Link to comment
Share on other sites

I noticed this in your while loop:

 

      } else if (tries > 0); {

The semicolon inserts a blank statement in the 'else if', causing whatever came after it to behave incorrectly. I can't tell how you intended it to behave, but I'm sure you didn't put that semicolon intentionally.

Edited by setun-90
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...