Run Loop In Background
Asked Answered
M

1

7

So, I am needing to run an infinite loop in the background of my app (written in JS) that will be used to cycle a ScrollableView every six seconds. However, while this loop runs, I'm unable to preform any other operations in the app as you would think.

To sum up, how can I run this loop at all times while still making the app operational?

Code:

function startScrolling() {
    for(; ; ) {
        sleep(6000);
        Ti.API.info('Scrolling To Index: ' + viewIndex);
        scrollView.scrollToView(viewIndex);
        if(viewIndex == 4) {
            viewIndex = 0;
            scrollView.scrollToView(viewIndex);
        } else {
            scrollView.scrollToView(viewIndex);
            viewIndex++;
        }
    }
}

function sleep(milliseconds) {
    var start = new Date().getTime();
    while((new Date().getTime() - start) < milliseconds) {
        // Do nothing
    }
}

EDIT: Solution

setInterval(function() {
    Ti.API.info('Scrolling To Index: ' + viewIndex);
        scrollView.scrollToView(viewIndex);
        if(viewIndex == 4) {
            viewIndex = 0;
            scrollView.scrollToView(viewIndex);
        } else {
            scrollView.scrollToView(viewIndex);
            viewIndex++;
        }
}, 6000);
Monomer answered 29/6, 2012 at 16:41 Comment(1)
Javascript doesn't support threading so you'll want to use setInterval to run a function every X milliseconds.Dolomite
I
16

Take a look at window.setInterval().

/* 
    Calls a function repeatedly, with a fixed 
    time delay between each call to that function.
*/
setInterval(startScrolling, 6000);
Inapprehensive answered 29/6, 2012 at 16:43 Comment(2)
Got it, thanks. Just combined it into one method and posted the code above using an intervalMonomer
You're right. Deleting my comment. This is so much more convenient than using jQuery, helper functions or recursion.Condition

© 2022 - 2024 — McMap. All rights reserved.