2016-12-11 2 views
0

Wie warten, bis der Ajax innerhalb einer verzögerten Funktion ausgeführt wird? Beispiel:

function action() { 
     console.log('action is called'); 

     var deferred = $.Deferred(); 

     console.log('do some actions...'); 

     //Wait until the ajax is completed and continue script 
     var myAjaxCall = ajaxCall(); 

     //Execute te next scripts only after the ajax done 

     console.log('do some actions...'); 

     return deferred.promise(); 
    } 


    function ajaxCall() { 
     console.log('ajaxCall is called'); 

     return $.ajax('url').then(function() { 
      console.log('success ajaxCall'); 
     }); 
    } 

    action().then(function() { 
     console.log('after action is done and ajaxCall is done'); 
    }); 

Die Probleme ist, dass er Funktion warten muss, bis die Ajax innen genannt und getan und andere Skripte fortsetzen.

Vielen Dank.

+0

Sie nie den 'Deferred' innerhalb des' action' lösen Funktion. – adeneo

Antwort

2

Sie können Versprechen Versprechen then() 's.

Auch gibt es keine Notwendigkeit, ein neues Versprechen zu schaffen, wenn $.ajax bereits wieder einen

So innen action() Sie so etwas wie tun:

function action() { 
    console.log('action is called'); 

    var myAjaxCall = ajaxCall(); 

    return myAjaxCall.then(function(result){ 
     // do stuff here after ajax is successfull 
    }); 
} 
+0

Aber die Aktion() wird innerhalb Anoter Funktion aufgerufen, die zurückgestellt enthalten. – Titeufggg

+0

keine Ahnung, was das bedeutet ... das ist nicht, was in Frage gezeigt wird – charlietfl

+0

Danke trotzdem für Ihre Antworten – Titeufggg

Verwandte Themen