setTimeout probleem
Mensen heeft iemand enig idee waarom mijn setTimeout niet werkt?
Ik heb 4 verschillende dingen geprobeerd maar niets schijnt te helpen:
Bij de laatste word de functie wel uitgevoerd maar niet na 5 sec maar gelijk.
Ik heb 4 verschillende dingen geprobeerd maar niets schijnt te helpen:
Code (php)
1
setTimeout('' + XMLHttp.funct + '(' + XMLHttp.ajax.responseText + ', ' + XMLHttp.ajax.status + ', ' + XMLHttp.ajax.responseXML + ', ' + parameters + ')', 5000);
Code (php)
1
setTimeout(XMLHttp.funct(XMLHttp.ajax.responseText, XMLHttp.ajax.status, XMLHttp.ajax.responseXML, parameters), 5000);
Code (php)
1
setTimeout('XMLHttp.funct(XMLHttp.ajax.responseText, XMLHttp.ajax.status, XMLHttp.ajax.responseXML, parameters)', 5000);
Code (php)
1
setTimeout(' ' + XMLHttp.funct(XMLHttp.ajax.responseText, XMLHttp.ajax.status, XMLHttp.ajax.responseXML, parameters), 5000);
Bij de laatste word de functie wel uitgevoerd maar niet na 5 sec maar gelijk.
Gewijzigd op 01/01/1970 01:00:00 door Zero XT
Gesponsorde koppelingen:
Het blijkt dat dit moeilijker gaat bij objecten:
http://www.webmastercity.nl/forum/viewtopic.php?f=35&t=36461
Ik heb het inmiddels 5x doorgelezen maar ik krijg het niet voor elkaar in mijn eigen code:
Iemand enig idee?
http://www.webmastercity.nl/forum/viewtopic.php?f=35&t=36461
Ik heb het inmiddels 5x doorgelezen maar ik krijg het niet voor elkaar in mijn eigen code:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
XMLHttp.ajax.onreadystatechange = function()
{
if(XMLHttp.ajax.readyState == 4)
{
XMLHttp.updating = false;
if(functie)
{
//De code hieronder moet dus een vertraging krijgen
XMLHttp.funct(XMLHttp.ajax.responseText, XMLHttp.ajax.status, XMLHttp.ajax.responseXML, parameters);
}
XMLHttp.ajax = null;
}
}
{
if(XMLHttp.ajax.readyState == 4)
{
XMLHttp.updating = false;
if(functie)
{
//De code hieronder moet dus een vertraging krijgen
XMLHttp.funct(XMLHttp.ajax.responseText, XMLHttp.ajax.status, XMLHttp.ajax.responseXML, parameters);
}
XMLHttp.ajax = null;
}
}
Iemand enig idee?
Gewijzigd op 01/01/1970 01:00:00 door Zero XT
bump
Heb je al die parameters wel nodig?
Je werkt object-georiënteerd. ipv. die parameters zet je eerst die waarden als eigenschappen van dat object.
Je werkt object-georiënteerd. ipv. die parameters zet je eerst die waarden als eigenschappen van dat object.
Gewijzigd op 01/01/1970 01:00:00 door Emmanuel Delay
Ik heb wel die parameters nodig. Maar omdat ik object georiënteerd werk, verlies ik mijn scope als ik gebruik maak van de functie setTimeout.
Zie ook:
http://forum.techzine.nl/forum/list_message/1680534
Ik weet nog steeds niet de oplossing voor mijn probleem.
Iemand enig idee?
Zie ook:
http://forum.techzine.nl/forum/list_message/1680534
Ik weet nog steeds niet de oplossing voor mijn probleem.
Iemand enig idee?
In Javascript kan je eigenlijk niet anders dan closures gebruiken. Dat maakt javascript juist zo leuk! :D
Jij maakt gebruik van een globaal object, XMLHttp? Ik weet niet of ik dat kan aanraden wanneer je speelt met asynchrone dingen als xmlhttpreqest en timeouts.
Het kan veel mooier als je je XMLHttpRequest instantie niet zo vastkoppelt aan je globale XMLHTTP object zoals je nu doet. Dan hoef je niet meer die losse variabelen te kopiëren, maar kan je gewoon je XMLHttpRequest zo meegeven.
Maar zoek maar eens op closures. Voor Javascript zijn ze essentieel.
Jij maakt gebruik van een globaal object, XMLHttp? Ik weet niet of ik dat kan aanraden wanneer je speelt met asynchrone dingen als xmlhttpreqest en timeouts.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
XMLHttp.ajax.onreadystatechange = function()
{
if(XMLHttp.ajax.readyState == 4)
{
XMLHttp.updating = false;
if(functie)
{
// deze kopieën zijn nodig omdat jij XMLHttp.ajax weer kan
// veranderen voordat de functie binnen setTimeout is aangeroepen
var responseText = XMLHttp.ajax.responseText;
var status = XMLHttp.ajax.status;
var responseXML = XMLHttp.ajax.responseXML;
// in de functie hieronder neem ik de variabelen uit deze scope mee.
setTimeout(function()
{
XMLHttp.funct(responseText, status, responseXML, parameters);
}, 5000);
}
XMLHttp.ajax = null;
// nu worden responseText, status en responseXML losgelaten, maar ze
// blijven bestaan omdat ze nog vast zitten aan die functie in
// je timeout. Zou je nu binnen die 5 seconden (voor de timeout) opnieuw
// in deze onreadystatechange functie terecht komen, dan worden de
// variabelen opnieuw aangemaakt (opnieuw, dus ze overschijven de vorige
// set variabelen die nu nog aan de functie in je timeout zitten niet!!)
}
}
{
if(XMLHttp.ajax.readyState == 4)
{
XMLHttp.updating = false;
if(functie)
{
// deze kopieën zijn nodig omdat jij XMLHttp.ajax weer kan
// veranderen voordat de functie binnen setTimeout is aangeroepen
var responseText = XMLHttp.ajax.responseText;
var status = XMLHttp.ajax.status;
var responseXML = XMLHttp.ajax.responseXML;
// in de functie hieronder neem ik de variabelen uit deze scope mee.
setTimeout(function()
{
XMLHttp.funct(responseText, status, responseXML, parameters);
}, 5000);
}
XMLHttp.ajax = null;
// nu worden responseText, status en responseXML losgelaten, maar ze
// blijven bestaan omdat ze nog vast zitten aan die functie in
// je timeout. Zou je nu binnen die 5 seconden (voor de timeout) opnieuw
// in deze onreadystatechange functie terecht komen, dan worden de
// variabelen opnieuw aangemaakt (opnieuw, dus ze overschijven de vorige
// set variabelen die nu nog aan de functie in je timeout zitten niet!!)
}
}
Het kan veel mooier als je je XMLHttpRequest instantie niet zo vastkoppelt aan je globale XMLHTTP object zoals je nu doet. Dan hoef je niet meer die losse variabelen te kopiëren, maar kan je gewoon je XMLHttpRequest zo meegeven.
Maar zoek maar eens op closures. Voor Javascript zijn ze essentieel.
Gewijzigd op 01/01/1970 01:00:00 door Jelmer rrrr



