在检查javascript中sharepoint组中的当前用户后,如何获取bool值?

时间:2015-07-28 09:20:55

标签: javascript sharepoint sharepoint-2010

  • JS功能

我编写了一个函数来检查javascript中sharepoint组中的用户是否

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);
}   }
  • 用法

我在另一个函数中使用它,希望获得 OnComplete 的bool值并返回它。

function SetButtonPermission() {
var isInGroup;
IsCurrentUserMemberOfGroup("Global", function(isCurrentUserInGroup) {
    isInGroup = isCurrentUserInGroup;
});
return isInGroup; }
  • 问题

似乎我无法获得bool isCurrentUserInGroup ,因为它警告“isInGroup未定”。 那么如何获得bool值?

1 个答案:

答案 0 :(得分:0)

与提供here的答案类似,当您处理异步函数调用和回调时,您最好将数据/逻辑注入回调中函数而不是从中返回数据。

另一种方法是推动"返回"将数据转换为全局变量,或者至少转换到与回调执行相同范围内可访问的变量,并延迟依赖逻辑的执行直到回调执行之后。

您可能希望了解JavaScript承诺,以了解脚本作者通常如何处理异步代码。