I have several lines of code that I want to run atomically (no context
switches to other code). Please look at the following barebones
example that illustrates the issue:
//=========================
function doAjax() {
console.info('making request');
new Ajax.Request(
url, {
onSuccess: function() {
console.info('success');
},
onFailure: function() {
console.info('failure');
},
onComplete: function() {
console.info('complete');
}
}
);
}
doAjax();
doAjax();
//=========================
If the processor is "faster" than the network, I expect the output to
be :
making request
making request
success
complete
success
complete
However, under certain conditions, success+complete is sometimes not
atomic. Here's some output that I have seen:
(A) making request
(A) success
(B) making request
(A) complete
(B) success
(B) complete
This is against my expectations and breaks my code logic - the website
fails to function when complete does not IMMEDIATELY follow success.
Can someone shed some light on why this is happening? I thought AJAX
is only asynchronous while waiting for the server and should become
synchronous as it's executing the callback code...
--
You received this message because you are subscribed to the Google Groups
"Prototype & script.aculo.us" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/prototype-scriptaculous?hl=en.