Jul 07 2022 08:44 AM
Below is the code. The asychraneous function is supposed to run for each listitem that meets the criteria. However, it exists after the first item. Any idea how I can fix it?
function onListItemsLoadSuccess(sender, args) {
// alert('success for calling MyList.');
var deferred = $.Deferred();
var ListEnumerator = this.items.getEnumerator();
while (ListEnumerator.moveNext()) {
var currentItem = ListEnumerator.get_current();
var itemGroup = currentItem.get_item('Group');
// alert(itemGroup);
// if (itemGroup == 'AJM-21')
if (itemGroup == myApprovedGroup)
{
// alert('match is found.');
var PM = currentItem.get_item("ProgramManager");
var GM = currentItem.get_item("GroupManager");
var Author = currentItem.get_item("Author");
var PMuser = clientContext.get_web().ensureUser(PM.get_lookupValue());
clientContext.load(PMuser);
var GMUser = clientContext.get_web().ensureUser(GM.get_lookupValue());
clientContext.load(GMUser);
var AuthorUser = clientContext.get_web().ensureUser(Author.get_lookupValue());
clientContext.load(AuthorUser);
clientContext.executeQueryAsync(
Function.createDelegate(this,
function () { deferred.resolve(currentItem);
// alert('success!');
var PMemail = PMuser.get_email();
// ArrayEmails2.push(PMemail);
var GMemail = GMUser.get_email();
// alert(GMemail);
ArrayEmails2.push(GMemail);
var login = PMuser.get_loginName();
var PMDisplayName = PMuser.get_title();
var AuthorEmail = AuthorUser.get_email();
ArrayCCEmails.push(AuthorEmail);
// alert(PMDisplayName);
// alert(PMemail);
ArrayCCEmails.push(PMemail);
GMDisplayName = GMUser.get_title();
// alert("User LoginName: " + login + "\nUser Email: " + email + "\nUser Display Name: " + displayName);
ArrayEmails.push({"UserEmail": PMemail});
// var email2 = user2.get_email();
// alert("Created by Email: " + email2);
ArrayEmails.push({"UserEmail": GMemail});
}),
Function.createDelegate(this,
function (sender, args) { deferred.reject(sender, args); }));
return deferred.promise();
}
}
}