[Javascript]setTimeout werkt niet naar behoren

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • telefoontoestel
  • Registratie: Oktober 2002
  • Laatst online: 29-06-2024

telefoontoestel

Maak me gelukkig....Bel!!

Topicstarter
Ik heb simpel gezegd de volgende functies:
rotate() en newPos()
In rotate wordt het aantal keer berekend dat newPos moet worden aangeroepen. Tevens wordt hier berekend hoeveel tijd er tussen de nieuwe berekeningen in moet zitten. Nu was mijn plan om dat getal te gebruiken om de newPos middels setTimeout aan te roepen. Dat komt er dan uit te zien als:
code:
1
2
3
4
5
6
7
8
function rotate(){
 // berekenen getallen
 setTimeout(newPos, interval);
}

function newPos(){
 // andere berekeningen
}

Nu is het geval dat de functie newPos maar een keer wordt aangeroepen i.p.v. elke "interval" keer. Wat zou hiervan de oorzaak kunnen zijn?

telefoontoestel


Acties:
  • 0 Henk 'm!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
Je roept rotate maar 1x aan waardoor settimeout maar 1x aangeroepen wordt? Simpelste en imho smerigste manier is om aan het einde van newpos rotate nogmaals aan te roepen.

Settimeout werkt maar 1x afaik.

Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 22:28

Matis

Rubber Rocket

Je moet de setTimeout weer opnemen in newPos ;)

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 15-09 17:26
of setInterval gebruiken :+

Acties:
  • 0 Henk 'm!

  • telefoontoestel
  • Registratie: Oktober 2002
  • Laatst online: 29-06-2024

telefoontoestel

Maak me gelukkig....Bel!!

Topicstarter
Ah. Op die manier idd. Maar als ik de setTimeout functie aanroep in de functie newPos, dan krijg je het recursieve functie idee, als ik het goed begrepen heb tenminste. Met minimaal 250 aanroepen lijkt me dat vrij onwenselijk. Ik heb het nu dus opgelost door het aantal keer te berekenen dat de functie aangeroepen dient te worden en dat in een loopje te zetten en te voorzien van een index argument.

Bedankt voor het advies

telefoontoestel


Acties:
  • 0 Henk 'm!

  • KompjoeFriek
  • Registratie: Maart 2001
  • Laatst online: 15-08 22:46

KompjoeFriek

Statsidioot

Het zou niet echt recursief geweest zijn.

Dit zou er ongeveer gebeuren:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
Rotate()
    Bereken getallen
    SetTimeout
    -- einde --


Vanuit de timeout:
    newPos()
        Bereken andere getallen
            Rotate()
                Bereken getallen
                SetTimeout
                -- einde --

WhatPulse! - Rosetta@Home - Docking@Home


Acties:
  • 0 Henk 'm!

  • R4gnax
  • Registratie: Maart 2009
  • Laatst online: 06-09 17:51
telefoontoestel schreef op dinsdag 22 december 2009 @ 21:46:
Ah. Op die manier idd. Maar als ik de setTimeout functie aanroep in de functie newPos, dan krijg je het recursieve functie idee,
Je snapt volgens mij niet helemaal hoe javascript timers werken, of wel? Google maar eens eventjes, want er is goede uitleg over te vinden.
Pagina: 1