.done 및 .then을 사용하여 여러 가지 방법을 시도했으며 데이터가 배열에 잘 채워진 것처럼 보입니다. 배열 "pushTeamMembers"내부),하지만 주 흐름에서 볼 때 배열이 비어 있습니다.지연된 jQuery Ajax 호출은 함수의 데이터 만 표시합니다.
범위 문제 일 수 있다고 생각했지만 마지막 console.log 전에 약간의 일시 중지 (간격 설정)를하면 효과적입니다. 프로그램이 이전에 데이터를 표시하고 있음을 암시하는 것으로 보입니다. 데이터가 실제로 풀다운됩니다. 감사.
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);