I'm confused by the term asynchronous when related to programming. It seems to mean the opposite in programming terms as what it is defined as in the dictionary. For example, the word synchronous means:
occurring at the same time; coinciding in time; contemporaneous; simultaneous.
going on at the same rate and exactly together; recurring together.
Yet, Wikipedia says:
"In programming, asynchronous events are those occurring independently of the main program flow. Asynchronous actions are actions executed in a non-blocking scheme, allowing the main program flow to continue processing."
Wouldn't something that is "non-blocking" and that allows "the main program flow to continue processing," be synchronized or "occurring at the same time"? It seems like the term synchronous suggests "non-blocking" and asynchronous, "blocking." Why do the terms appear to be used in reverse when related to programming, or does it have something to do with lower-level computing that I don't understand?
When I use an synchronous AJAX call, I do the following...
$.ajax({
url: somefile.php,
async: false,
success: {
...code that gets run on success...
}
});
...code that gets run after the ajax-success code runs...
With this, it actually waits for a response before running the rest of the script, it's a blocking action. Then why is this termed synchronous, when it's not synchronized with any other process, but actually the opposite?