これはいくつかの方法で.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);