Toon posts:

[JavaScript] delay ?!

Pagina: 1
Acties:

Verwijderd

Topicstarter
Heb een klein probleempje. Kort uitgelegd. Als iemand op een knop klikt wordt de functie DoZoomTo() aangeroepen die inzoomt op een bepaald gedeelte van een kaart.
Daarna moet er met een stip aangegeven worden waar dat is.

Dit is de code:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
var i=0;

function DoZoomTo()
{
    var map = getMap();
    zoom_street();
    while(map.isBusy())
    {
        if(i > 10){ alert(i); break; }
        setTimeout('i = iup();',200);

    }
                toon_loc();
}

function iup()
{
    i = i + 1;
    return i;
}


Nu is het probleem dus dat de toon_loc() pas mag worden uitgevoerd als de kaart niet meer busy is. ( een while(isbusy) kan niet, loopt dan vast).

De settimeout zou eigenlijk 200 Ms moeten wachen en dan het i-tje ophogen, maar dat gebeurt niet, want hij gaat gewoon verder en telt pas na 200Ms dat i-tje op. Hij moet daar dus eigenlijk gewoon even wachten....

Iemand?

  • André
  • Registratie: Maart 2002
  • Laatst online: 14:49

André

Analytics dude

Dan moet je vanuit de zoom_street() functie de toon_loc() functie triggeren zodra hij klaar is.

En het optellen doe je gewoon zo:

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
Tijd = setInterval("iup()", 200);
  
function iup()
{
  i += 1
  if (i > 10)
  {
    clearInterval(Tijd)
    alert(i)
  }
}

[ Voor 7% gewijzigd door André op 28-11-2002 14:17 ]


Verwijderd

Topicstarter
nou dat is dus het probleem.... in die functie (zoom_street) wordt de functie aangeroepen die dus daadwerkelijk inzoomt. Maar je kan niet wachten tot hij klaar is met zoomen. Dus vandaar dat er die delay inmoet...

  • André
  • Registratie: Maart 2002
  • Laatst online: 14:49

André

Analytics dude

Verwijderd schreef op 28 november 2002 @ 14:28:
nou dat is dus het probleem.... in die functie (zoom_street) wordt de functie aangeroepen die dus daadwerkelijk inzoomt. Maar je kan niet wachten tot hij klaar is met zoomen. Dus vandaar dat er die delay inmoet...
Natuurlijk kun je wel wachten, je moet als het zoomen klaar is vanuit de zoomfunctie een nieuwe functie aanroepen waar de rest van de code staat.

Maar je moet niet met de code verder gaan na de aanroep van de zoomfunctie.

Verwijderd

Topicstarter
setinterval did the trick :-)