Ich habe versucht, diese verschiedene Möglichkeiten, mit .done und .then, und ich bekomme das gleiche Ergebnis - die Daten scheint das Array zu füllen gut (ich kann console.log Array innerhalb von "pushTeamMembers"), aber das Array ist leer, wenn ich versuche, es im Hauptfluss zu sehen.Deferred jQuery Ajax Call zeigt nur Daten innerhalb der Funktion
Ich dachte, es könnte ein Problem mit dem Oszilloskop sein, aber es funktioniert gut, wenn ich vor dem letzten console.log eine kleine Pause (Intervall) setze - was implizieren soll, dass das Programm die Daten vor dem anzeigt Daten werden tatsächlich heruntergezogen. Vielen Dank.
var siteurl = _spPageContextInfo.webAbsoluteUrl;
var teamMembers = [];
// ********** Ajax query
var teamListData = $.ajax({
type: 'get',
url: siteurl + "/_api/web/lists/getbytitle('The Team')/items",
headers: { "Accept": "application/json; odata=verbose" }
});
// ********** Ajax query deferred ".then" handler
teamListData.then(function (value) {
$.each(teamListData, function(i, item) {
var thisNameId = teamListData[i].NameId;
var workStream = teamListData[i].Title;
var member = {id: thisNameId, workstream: workStream};
pushTeamMembers(member);
});
});
// ********** Push onto array
function pushTeamMembers(member)
{
teamMembers.push(member);
// ********** This shows that the array is populated.
console.log(teamMembers);
}
// ********** This shows that the array is empty - unless I put a
// slight pause here (set interval).
console.log(teamMembers);