JavaScript function does not wait for the end of another to start

9

Problem

My role is not waiting for the other to be finalized so it can continue, for example:

Example:

function buscando_dados(){
   $.post('ajax.php',{},function(dados){
      alert(dados); 
   });
}
function buscar_dados(){
   buscando_dados();
   alert('prosseguindo'); //Prosseguindo está função sem esperar a outra acabar a requisição
} 

I do not know how to do alert('prosseguindo'); to be executed only after alert('dados'); and at the moment this is not happening.

How can I do this?

    
asked by anonymous 16.04.2014 / 17:17

2 answers

12

Your buscando_dados function executes the POST method of jQuery that makes an asynchronous request in AJAX you need to proceed with execution after the callback of função POST.

A solution to what you want, this can be it.

function buscando_dados(func){
   $.post('ajax.php',{},function(dados){
      func.call(this,dados);
   });
}
function buscar_dados(){
   buscando_dados(function(dados){
       alert('prosseguindo'); //Prosseguindo está função sem esperar a outra acabar a 
   });

} 

We pass one function per parameter that is executed in callback of the POST function;

    
16.04.2014 / 17:21
2

You can also use Ajax synchronously.

function buscando_dados(){
   $.ajaxSetup({async: false});
   $.post('ajax.php',{},function(dados){
      alert(dados); 
   });
   $.ajaxSetup({async: true});
}

function buscar_dados(){
   buscando_dados();
   alert('prosseguindo');
} 

Example in JSFiddle .

    
18.04.2014 / 00:30