2016-08-26 7 views
1

Bitte sehen Sie sich diese Methode an. In dieser Funktionsantwort rufe ich zwei Funktionen findConnectedUsersRelationship() und displayUsers(response.users) auf.Wie zwei Methoden nacheinander in Javascript aufrufen?

Das Problem ist displayUsers(response.users) Methode läuft und erhält Ergebnis vor findConnectedUsersRelationship(). Meine Anforderung ist, dass ich zuerst findConnectedUsersRelationship() und zweitens displayUsers(response.users) ausführen muss. Die zweite Methode hängt von der ersten Methode ab.

function filterUsers(location, gender, youngAge, oldAge, interests){ 
     var userId = signedUserId; 
     $.post(urlHolder.filter, { 
      userId: userId, 
      location: location, 
      gender: gender, 
      youngAge: youngAge, 
      oldAge: oldAge, 
      interests: interests 
     }, function(response) { 
      console.log('User response <<>>', response.users.length); 
      var filteredUsers; 
      findConnectedUsersRelationship(); 
      displayUsers(response.users); 

     }); 
    } 



// To find connected user relationship 
var relationshipList = new Array; 
function findConnectedUsersRelationship() { 
    try { 
     $.post(urlHolder.findConnectedUsersRelationship, { 
      userId : signedUserId 
     }, function(response) { 
      //console.log('response downforanything: ', JSON.stringify(response)); 
      if (response) { 
       for (var counter = 0; counter < response.users.length; counter++) { 
        relationshipList.push(response.users[counter].id); 
       } 
      } else { 
       console.log('No connected users >>>> '); 
      } 
      //console.log('relationshipList.length',relationshipList); 
      console.log('relationshipList length in auto complete *** ',relationshipList.length); 
     }); 
    } catch (e) { 
     console.log('findConnectedUsersRelationship Exception >>>', e); 
    } 

} 
+0

Dies kann nicht sein, weil Sie vor der Anzeige suchen .. suchen. Als Alternative könnte findConnect displayUsers aufrufen. –

+2

Sie müssen angeben, was in findConnectedUsersRelationship() passiert - höchstwahrscheinlich haben Sie dort einen anderen $ .post. –

+0

wie? Die Methode displayUsers (response.users) ruft die Funktion filterUsers ab. –

Antwort

5

$.post gibt ein promise.

diese Weise können Sie Ihren Code, um fortzufahren:

function filterUsers(location, gender, youngAge, oldAge, interests){ 
    $.post(url, { ... }, function(response) { 
     findConnectedUsersRelationship().done(function() { 
      displayUsers(response.users); 
     }); 
    }); 
} 

und Ihre findConnectedUsersRelationship ändern(), um das Versprechen von seiner Ajax-Funktion zurückzukehren, so statt:

function findConnectedUsersRelationship() { 
    $.post(... 

wird es

function findConnectedUsersRelationship() { 
    return $.post(... 
+0

Würde diese Vorgehensweise keine folgenden Fehler auslösen, wenn "catch" von 'findConnectedUsersRelationship' eintritt, weil dann kein' Versprechen' zurückgegeben wird? – eisbehr

+0

findConnectedUsersRelationship(). Done (function() { displayUsers (response.users); }); ich füge das hinzu, aber ich werde "fertig" ist undefiniert. –

+1

@KumaresanPerumal Sie haben kein Versprechen von 'findConnectedUsersRelationship' zurückgegeben. – Jamiec

Verwandte Themen