What does "async: false" do in jQuery.ajax()?

Specifically, how does it differ from the default ( async: true ) ?

In what circumstances would I want to explicit set async to false, and does it have something to do with preventing other events on the page from firing ?


Solution 1:

Does it have something to do with preventing other events on the page from firing?

Yes.

Setting async to false means that the statement you are calling has to complete before the next statement in your function can be called. If you set async: true then that statement will begin it's execution and the next statement will be called regardless of whether the async statement has completed yet.

For more insight see: jQuery ajax success anonymous function scope

Solution 2:

  • async:false = Code paused. (Other code waiting for this to finish.)
  • async:true = Code continued. (Nothing gets paused. Other code is not waiting.)

As simple as this.

Solution 3:

Async:False will hold the execution of rest code. Once you get response of ajax, only then, rest of the code will execute.