在检查 javascript 中的共享点组中的当前用户后,如何获取 bool 值?
How can I get a bool value, after I check if current user in sharepoint group in javascript?
- JS函数
我编写了一个函数来检查 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);
} }
- 用法
我在另一个函数中使用它,希望得到 OnComplete 和 return 的 bool 值。
function SetButtonPermission() {
var isInGroup;
IsCurrentUserMemberOfGroup("Global", function(isCurrentUserInGroup) {
isInGroup = isCurrentUserInGroup;
});
return isInGroup; }
- 问题
似乎我无法获取 bool isCurrentUserInGroup 因为它提醒 "isInGroup is undetified"。
那么如何获取 bool 值?
与提供的答案类似 ,当您处理异步函数调用和回调时,最好将 data/logic 注入 你的回调函数而不是从中返回数据。
另一种方法是将 "return" 数据推送到全局变量中,或者至少推送到与回调执行相同范围内可访问的变量,并延迟执行相关逻辑,直到回调执行完毕.
您可能想查看 JavaScript promises 以了解脚本作者通常如何处理异步代码。
- JS函数
我编写了一个函数来检查 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); } }
- 用法
我在另一个函数中使用它,希望得到 OnComplete 和 return 的 bool 值。
function SetButtonPermission() { var isInGroup; IsCurrentUserMemberOfGroup("Global", function(isCurrentUserInGroup) { isInGroup = isCurrentUserInGroup; }); return isInGroup; }
- 问题
似乎我无法获取 bool isCurrentUserInGroup 因为它提醒 "isInGroup is undetified"。 那么如何获取 bool 值?
与提供的答案类似
另一种方法是将 "return" 数据推送到全局变量中,或者至少推送到与回调执行相同范围内可访问的变量,并延迟执行相关逻辑,直到回调执行完毕.
您可能想查看 JavaScript promises 以了解脚本作者通常如何处理异步代码。