7

JavaScript の実行時に CoreService からユーザー名を取得する( Tridion PowerToolsからの) 以下があります。

JavaScript (アンギラ):

PowerTools.Popups.Example.prototype._onbtnGetUserInfoClicked = function () { 
    var onSuccess = Function.getDelegate(this, this._handleUserInfo);
    var onFailure = null;
    var context = null;
    //call function
    PowerTools.Model.Services.Example.GetUserInfo(onSuccess, onFailure, 
                                                  context, false);
}; 

// Delegate function "onSuccess"
PowerTools.Popups.Example.prototype._handleUserInfo = function (response) {
    var p = this.properties;
    $j("#lblUserInfo").text(response.UserName);
};

CoreService 側: (C# .svc)

[OperationContract, WebGet(ResponseFormat = WebMessageFormat.Json)]
public ExampleData GetUserInfo()
{
    var coreService = Client.GetCoreService();
    _exampleData = new ExampleData()
    {
        UserName = coreService.GetCurrentUser().Title
    };
    return _exampleData;
}

これにより、非同期呼び出しが送信されます。

PowerTools.Model.Services.Example.GetUserInfo(onSuccess, onFailure, context, false)

一方、これは応答を処理するために別の関数を割り当てます。

Function.getDelegate(this, this._handleUserInfo)

しかし、onSuccess、onFailure、context、および Boolean はどこから来PowerTools.Model.Services.Example.GetUserInfo(onSuccess, onFailure, context, false)ますか?

この 4 つのパラメーターの署名は、サービス コード内のパラメーターのない GetUserInfo() と一致しません。なぜその順序とこれらの 4 つ?

4

1 に答える 1

7

onSuccessとはonFailure、WCF サービスからの応答を処理するために割り当てられるコールバック関数です。

これが PowerTools プロジェクトのコードであると仮定すると、WCF サービス (サービスのソースはこちら) メソッドのプロキシ メソッドとして機能する、自動生成された JavaScript メソッドが存在しますGetUserInfo()

そこには、CoreService への呼び出しが実際に表示されます。これで、プロキシ パラメータのマッピングが説明されるはずです。

  1. onSuccessWCFサービスのレスポンスを処理する関数です
  2. onFailure呼び出しが失敗した場合に実行する関数です
  3. contextコールバック関数に戻される変数なので、これを使用して物事を渡すことができます。
  4. false呼び出しが同期かどうか

WCF サービスがパラメーターを受け取る場合、生成されたプロキシは次のような別の署名を形成します。

PowerTools.Model.Services.Example.GetOtherInfo(param1, param2, onSuccess, 
                                               onFailure, context, false);
于 2012-02-21T22:06:13.240 に答える