2016-07-29 13 views
1

Ich habe eine for-Schleife, die Daten aus Listen in Unterwebsites erhält, um eine HTML-Liste auf der Seite mit einer asynchronen AJAX-Anfrage zu erstellen, funktioniert, aber ich möchte die Liste bestellen, nachdem es generiert wurde Zeige die Liste in alphabetischer Reihenfolge. Ich bin auf einer Lernkurve mit Javascript, so dass jede Hilfe geschätzt wird. Ich muss die Funktion sortProjects ausführen, nachdem die onWebsLoaded-Funktion abgeschlossen ist.Ausführen von JavaScript nach for Schleife

function onWebsLoaded(sender, args) { 
    for (var i = 0; i < this.webs.get_count(); i++) 
    { 
     client = ""; 
     var title = this.webs.itemAt(i).get_title(); 
     var desc = this.webs.itemAt(i).get_description(); 
     var url = this.webs.itemAt(i).get_serverRelativeUrl(); 
     id = (title).replace(/\ /g, ""); 
     getProjectProperties(url, title, desc, client, id); 
    } 
} 
function sortProjects() { 
    tinysort('ul#projectstable>li'); 
} 
function getProjectProperties (url, title, desc, client, id) { 
    $.ajax({ 
     url: url + "/_api/web/lists/getbytitle('Project Properties')/items('1')", 
     method: "GET", 
     headers: { "Accept": "application/json; odata=verbose" }, 
     success: function (data) { 
        client = data.d.Title; 
        $('#projectstable').append("<li id='" + id + "' class='ms-ListItem'><a href='" + url + "'><span id='" + id + "Client' class='ms-ListItem-primaryText'>" + title + "</span><span class='ms-ListItem-secondaryText'>" + client + "</span><span class='ms-ListItem-tertiaryText'>" + desc + "</span></a></li>"); 
     }, 
     error: function() { 
        $('#projectstable').append("<li id='" + id + "' class='ms-ListItem'><a href='" + url + "'><span id='" + id + "Client' class='ms-ListItem-primaryText'>" + title + "</span><span class='ms-ListItem-secondaryText'>" + client + "</span><span class='ms-ListItem-tertiaryText'>" + desc + "</span></a></li>"); 
     } 
    }); 
} 

Antwort

2

Sie können Ihre Logik ändern, so dass Sie ein Array der von den $.ajax() Anrufe zurück Versprechen speichern. Sie können dann apply() dieses Array zu $.when und rufen Sie sortProjects(). Versuchen Sie dies:

+0

Ich habe den Code geändert, aber es immer noch nicht ausgeführt können Sie die Bits kommentieren, die Sie geändert haben, um zu überprüfen, dass ich nichts verpasst habe? @rory –

+0

Überprüft Zeile für Zeile funktioniert diese Lösung nicht für mich. –