У меня есть функция, которая просматривает список адресов электронной почты через запятую.
В цикле мы передаем некоторые параметры (включая адрес электронной почты) в функцию 'getUserProperties', которая использует SP.clientContext.
Я сократил код в функции до:
getUserProperties = function (targetUser, userCount, parentCtrl) {
var deferred = $.Deferred();
var clientContext = new SP.ClientContext.get_current();
var peopleManager = new SP.UserProfiles.PeopleManager(clientContext);
var userProfileProperties;
var profilePropertyNames = ["PictureURL", "PreferredName", "SPS-JobTitle", "Department", "WorkPhone", "WorkEmail", "PersonalSpace"];
var userProfilePropertiesForUser = new SP.UserProfiles.UserProfilePropertiesForUser(
clientContext,
targetUser,
profilePropertyNames);
userProfileProperties = peopleManager.getUserProfilePropertiesFor(userProfilePropertiesForUser);
console.log(userProfileProperties);
console.log(userProfilePropertiesForUser);
clientContext.load(userProfilePropertiesForUser);
clientContext.executeQueryAsync(function (sender, args) {
console.log(userProfileProperties);
},function (sender, args) {
deferred.reject(null);
});
return deferred.promise();
}
Моя проблема с точки зрения понимания происходящего состоит в том, что первый console.log (userProfileProperties); отображает данные, запрошенные в журнале консоли, в том же порядке, что и в предыдущей функции цикла.
Это то же самое, что и console.log (userProfilePropertiesForUser); вызов.
Однако, после вызова clientContext.load и clientContext.executeQueryAsync и затем console.log (userProfileProperties); отображается во второй раз порядок данных отличается от порядка в цикле от предыдущей функции.
Таким образом, я хотел бы знать, почему данные отличаются от данных, передаваемых в функцию, так как clientContext.load и clientContext.executeQueryAsync влияют на это.
Большое спасибо