/ Forside / Teknologi / Udvikling / Java Scripts / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java Scripts
#NavnPoint
molokyle 5410
Klaudi 2799
smorch 2439
kim 1360
Harlekin 1134
bentjuul 984
gibson 800
severino 695
Random 675
10  konsulent.. 626
setTimeout og "stack overflow"
Fra : Niels Andersen


Dato : 06-03-01 21:06

Jeg har lavet en lille funktion, som vil kalde sig selv via setTimeout
indtil operationen lykkes.

Problemet er, at NOGEN gang (måske 10%) kommer fejlmeddelelsen "Stack
overflow at line: ??", hvor linjenummeret er linjen med setTimeout.
Den ser lidt kryptisk ud, men jeg kan ikke lige finde nogen problemer med
den...

function testfunktion(param) {
if ([funktionen kan udføres nu]){
[gør hvad der skal gøres]
} else {
setTimeout('testfunktion(\''+param+'\')',1000);
}
}

"param" er en streng. jeg kan ikke bare skrive 'testfunktion(param)' i
setTimeout, da "param" ikke findes 2. gang funktionen udføres. Altså skriver
jeg den som en "literal"/"constant".

Funktionen bruges til at kommunikere mellem to "windows". Der skal udføres
en funktion i et andet vindue. Dette kan naturligvis først lade sig gøre når
dokumentet er hentet. Derfor skal der forsøges fx. 1 gang i sekundet, indtil
vinduet er loaded og funktionen kan udføres.

Det skal siges at "stack overflow" kommer med det samme, der går ikke så
meget som et halvt sekund. Men et er langt fra hver gang. Jeg kan stå og
reloade den samme side 50 gange, og problemet opstår måske 5 gange.
Mærkeligt...


Mvh.

Niels Andersen



 
 
Niels Andersen (09-03-2001)
Kommentar
Fra : Niels Andersen


Dato : 09-03-01 09:00

"Niels Andersen" <niels-usenet@myplace.dk> wrote in message
news:kqbp6.538$A35.46795@news000.worldonline.dk...
> Problemet er, at NOGEN gange (måske 10%) kommer fejlmeddelelsen "Stack
> overflow at line: ??", hvor linjenummeret er linjen med setTimeout.
> Den ser lidt kryptisk ud, men jeg kan ikke lige finde nogen problemer med
> den...
>
> function testfunktion(param) {
> if ([funktionen kan udføres nu]){
> [gør hvad der skal gøres]
> } else {
> setTimeout('testfunktion(\''+param+'\')',1000);
> }
> }

Tilfældigvis opdagede jeg at linjenummeret var forkert. Lige pludselig kom
den samme fejl nemlig på linjen med "else", og den kan der sgu ikke opstå
fejl i... :) (når man indrykker korrekt)

Det vist sig at jeg refererede forket til et objekt i if'en. Hvordan det kan
give en "stack overflow" aner jeg ikke. :)


Mvh.

Niels Andersen




Søg
Reklame
Statistik
Spørgsmål : 177502
Tips : 31968
Nyheder : 719565
Indlæg : 6408528
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste