I am not able to execute the JavaScript Asychraneous function several times

Copper Contributor

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();
}
}

}

 

0 Replies