2017-12-21 1 views
0

Ich möchte checkifPresentInActiveProjLib Funktion zuerst und danach checkifPresentInClosedProjLib Funktion aufrufen. Wie erreiche ich das?Wie rufe ich eine Funktion zuerst und dann die zweite in Javascript

checkifPresentInActiveProjLib(function(flgAc) { 
    if (flgAc === "active_found") 
     // do something 

    $.ajax(...); // ajax call 
}); 

checkifPresentInClosedProjLib(function(flgCl) { 
    if (flgCl === "closed_found") 
     // do something 

    $.ajax(...); // ajax call 
}); 
+0

erwarten checkifPresentInActiveProjLib() tun? – David

+0

In Ihren Beispielen werden sie nacheinander aufgerufen. Meinst du nach dem Ajax-Ruf des ersten? – klugjo

+0

ja .. Diese beiden Funktionen (checkifPresentInActiveProjLib und checkifPresentInClosedProjLib) sind in einer Funktion vorhanden, die nach button click aufgerufen wird.Ich möchte, dass nach dem Ajax-Aufruf von checkifPresentInActiveProjLib() abgeschlossen wird, sollte es checkifPresentInClosedProjLib() aufrufen – user8481842

Antwort

2

Sie Javascript verwenden Promise Objekt

function checkifPresentInActiveProjLib(flgAc) { 
    if (flgAc === "active_found") 
     alert('active_found'); 
}; 

function checkifPresentInClosedProjLib(flgCl) { 
    if (flgCl === "closed_found") 
     alert('closed_found'); 
}; 

function makeAjaxCall(){ 
    var promiseObj = new Promise(function(resolve, reject){ 
     resolve(checkifPresentInActiveProjLib()); 
    }); 
return promiseObj; 
} 

makeAjaxCall().then(checkifPresentInClosedProjLib()); 
+0

@ programtreasures- Ist diese Lösung abgeschlossen.Dont wir die Promoise auflösen und ablehnen? – user8481842

+0

Ich bekomme Fehler: checkifPresentInActiveProjLib ist nicht definiert und checkifPresentInClosedProjLib ist nicht definiert – user8481842

+0

Bitte überprüfen Sie jetzt, und rufen Sie Ihre Ajax innerhalb der entsprechenden Funktion – programtreasures

2

Verwenden Sie einfach Versprechen, um asynchrone Dinge zu handhaben. Sie benötigen checkifPresentInActiveProjLib zurückkehren Versprechen, in diesem Fall zu modifizieren Ihr Versprechen ist $.ajax(...); so dass Sie return $.ajax(...); dann einfach auf die folgende Weise die nächste func nennen:

checkifPresentInActiveProjLib(...) 
.then(function() { 
     checkifPresentInClosedProjLib(args) 
}) 
0

Sie haben Async-Ajax-Aufrufe in beiden Funktionen. Wenn Sie den zweiten nach dem ersten Aufruf aufrufen möchten, müssen Sie warten, bis die erste Funktion abgeschlossen ist.

Sie können das einfach tun, indem Sie die zweite Funktion im Antwortabschnitt des Ajax-Funktionsteils in der ersten Funktion aufrufen.

checkifPresentInActiveProjLib(function(flgAc) { 
    if (flgAc === "active_found") 
     // do something 

    $.ajax(...).done(function(data) { 
    // call second function here 
    });); 
}); 

Oder können Sie verspricht verwenden:

checkifPresentInActiveProjLib(function (flgAc) { 
    return new Promise(function (resolve, reject) { 
     if (flgAc === 'active_found') 
     // do something 
     $.ajax(...) 
       .done(function (data) { 
        if (data) resolve(data); 
       }) 
       .fail(function (err) { 
        reject(err); 
       }); 
    }); 
}); 

Dann rufen Sie Funktionen wie:

checkifPresentInActiveProjLib(...).then(data => checkifPresentInClosedProjLib(...) 
Verwandte Themen