2015-07-28 1 views
0
  • JS Функция

Я пишу функцию, чтобы проверить, если пользователь в группе Sharepoint в JavaScriptКак получить значение bool после проверки текущего пользователя в группе sharepoint в javascript?

function IsCurrentUserMemberOfGroup(groupName, OnComplete) { 
var currentContext = new SP.ClientContext.get_current(); 
var currentWeb = currentContext.get_web(); 
var currentUser = currentContext.get_web().get_currentUser(); 
currentContext.load(currentUser); 
var allGroups = currentWeb.get_siteGroups(); 
currentContext.load(allGroups); 
currentContext.load(allGroups, 'Include(Users)'); 
currentContext.executeQueryAsync(OnSuccess, OnFailure); 

function OnSuccess(sender, args) { 
    var userInGroup = false; 
    var groupEnumerator = allGroups.getEnumerator(); 
    while (groupEnumerator.moveNext()) { 
     var oGroup = groupEnumerator.get_current(); 
     if (groupName == oGroup.get_title()) { 
      var allUsers = oGroup.get_users(); 
      var userEnumerator = allUsers.getEnumerator(); 
      while (userEnumerator.moveNext()) { 
       var oUser = userEnumerator.get_current(); 
       if (oUser.get_id() == currentUser.get_id()) { 
        userInGroup = true; 
        break; 
       } 
      } 
     } 

    } 
    OnComplete(userInGroup); 
} 

function OnFailure(sender, args) { 
    OnComplete(false); 
} } 
  • Использование

Я использую его в другой функции, хочу получить значение bool OnComplete и вернуть его.

function SetButtonPermission() { 
var isInGroup; 
IsCurrentUserMemberOfGroup("Global", function(isCurrentUserInGroup) { 
    isInGroup = isCurrentUserInGroup; 
}); 
return isInGroup; } 
  • Вопрос

Похоже, я не могу получить логическое значение isCurrentUserInGroup, потому что он предупредит "isInGroup является undetified". Итак, как я могу получить значение bool?

+0

Возможный дубликат [Доступ к переменной, которая выводится из функции async] (http://stackoverflow.com/questions/31685255/access-to-a-variable-which-is-output-from-an -асинхронная функция) –

ответ

0

Подобный ответ предоставляется here, когда вы имеете дело с асинхронными вызовами функции и обратные вызовы, вы будете лучше инъекционного данных/логики в функции обратного вызова вместо возврата данных из него.

Альтернативой является то, что данные «вернуть» в глобальную переменную или, по меньшей мере, к переменной, доступной в той же области, что и выполнение обратного вызова, и задержка выполнения зависимой логики до тех пор, пока не будет выполнен обратный вызов.

Возможно, вам захочется взглянуть на JavaScript, чтобы увидеть, как сценаристы обычно обрабатывают асинхронный код.

+0

Спасибо! Вы очень помогаете! –

 Смежные вопросы

  • Нет связанных вопросов^_^