0

对不起,关于回调的另一个问题。在尝试解决这个问题时,我遇到了大约一百万个。但是,我很难理解这种特殊情况。

我有下面的代码,这显然不起作用,因为代表显然不返回值(我正在学习,在这里)。所以,我知道此时我需要一个回调,但我不确定如何更改此代码来做到这一点。任何人都可以帮忙吗?

function MyFunction() {
    var ThisLoggedInUser = checkCurrentUser();
    //do some stuff with the current user
}

function checkCurrentUser() {
    var context = SP.ClientContext.get_current();
    var siteColl = context.get_site();
    var web = siteColl.get_rootWeb();
    this._currentUser = web.get_currentUser(); 
    context.load(this._currentUser);
    context.executeQueryAsync(Function.createDelegate(this, this.CheckUserSucceeded),
    Function.createDelegate(this, this.CheckUserfailed));
}

function CheckUserSucceeded() {
    var ThisUser = this._currentUser.get_title();

    return ThisUser;
}

function CheckUserfailed() {
    alert('failed');
}
4

2 回答 2

1

根据您的评论,您必须按照您想要的代码方式重新设置,因为您不能在 MyFunction() 中使用 ThisUser。

例如,您可以这样做:

function CheckUser() { ... }

// then call the function to find the current user
CheckUser();

// then in  CheckUserSucceeded you call MyFunction()
function CheckUserSucceeded() {
  MyFunction(this._currentUser.getTitle())
}

// and now you can use ThisUser in MyFunction()
function MyFunction(ThisUser) {
  // do something with ThisUser
}
于 2013-11-04T20:23:30.570 回答
0

你的 CheckUserSucceed 不会返回任何东西,因为它是异步的......所以你必须做这样的事情:

var ThisUser;
function CheckUserSucceeded() {
  ThisUser = this._currentUser.getTitle()
   // here you can call an other action and do something with ThisUser
}

您可能还想从http://aymkdn.github.io/SharepointPlus/$SP().whoami()检查函数并查看文档。

于 2013-11-01T22:40:56.863 回答