ramazan murat
ramazan murat

Reputation: 1277

Putting a setInterval when a function called

var now = new Date();
var millisTill10 = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 1, 20, 00, 0) - now;

function openAPage() {
    var startTime = new Date().getTime();
    var myWin = window.open("http://google.com","_blank")
    var endTime = new Date().getTime();
    var timeTaken = endTime-startTime;

    document.write("<br>button pressed@</br>")
    document.write(startTime);
    document.write("<br>page loaded@</br>")
    document.write(endTime);
    document.write("<br>time taken</br>")
    document.write(timeTaken);

    myWin.close()
}

function beginSequence() {
    openAPage();
    setInterval(openAPage, 5000);
}

setTimeout(beginSequence, millisTill10);

This is my JS code. I am opening a web page with setTimeout as you see. But after then I want to put an internal for example I will call openAPage function every 1 minute after setTimeout statement. How will I do it? Can anyone fix my code?

Upvotes: 0

Views: 406

Answers (2)

Aishwar
Aishwar

Reputation: 9714

I realize there are a lot of correct answers already. I'll post this anyway for kicks :)

function() {
   var win = window.open("about:blank")
   var doc = win.document
   doc.write("Hello")
   setTimeout(arguments.callee, 60*1000)
}()

These are 2 of the my favorite things you can do in Javascript: Self-invoke a function (the ending () after the function declaration, and being able to access the anonymous function from within the function through arguments.callee.

This is better than setInterval in that the first process has to be completed and then 60s later, the second process starts. With setInterval, the process just keeps starting every 60s. 60s is a large interval where this wouldn't matter as much, but this usually matters a lot more with smaller times (in the ms ranges). Because it might end up buffering the second function to execute before the first one is complete.

Upvotes: 0

sje397
sje397

Reputation: 41822

setTimeout(startOpeningPages, millisTill10);

function startOpeningPages() {
   openAPage();
   setInterval(openAPage, 60 * 1000);
}

Upvotes: 2

Related Questions