2012-02-21 8 views
7

Mam następujące (od Tridion PowerTools), które pobiera nazwę użytkownika z CoreService, gdy działa niektóre JavaScript.Co oznaczają te wszystkie parametry podczas wywoływania metody internetowej WCF z języka Anguilla JavaScript?

JavaScript (Anguilla):

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 strona: (C# .svc)

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

Ten wysyła asynchroniczne wywołanie:

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

niniejsza przypisuje inną funkcję do obsługi odpowiedzi:

Function.getDelegate(this, this._handleUserInfo)

Ale skąd onSuccess, onFailure, kontekst, a Boolean pochodzą w: PowerTools.Model.Services.Example.GetUserInfo(onSuccess, onFailure, context, false)?

Ten podpis cztery parametr nie pasuje do żadnego-paramater GetUserInfo() w kodzie serwisowym. Dlaczego ta kolejność i te cztery?

+0

EDIT: sprecyzować, część I był zdezorientowany. –

Odpowiedz

7

onSuccess i onFailure to funkcje zwrotne, które są przypisane do obsługi odpowiedzi z usługi WCF.

Zakładając, że jest to kod z projektu PowerTools, jest automatycznie generowana metoda JavaScript, która działa jako metoda proxy dla usługi WCF (źródło usługi: here) o nazwie GetUserInfo().

Tam można zobaczyć połączenie z CoreService. To powinno ci wyjaśnić odwzorowanie parametrów proxy.

  1. onSuccess jest funkcja przetwarzać odpowiedź usługi WCF
  2. onFailure jest funkcja uruchomić, jeśli połączenie nie powiedzie
  3. context jest zmienną, która będzie przekazywana z powrotem do swoich funkcji zwrotnych, dzięki czemu może go używać do przekazywania rzeczy.
  4. false czy połączenie jest synchroniczny lub nie

Jeśli usługa WCF było podjąć parametrów, generowany proxy by utworzyć inny podpis, coś

PowerTools.Model.Services.Example.GetOtherInfo(param1, param2, onSuccess, 
               onFailure, context, false); 
+0

Jeśli więc funkcja C# zakończy się powodzeniem, twoje połączenie onSuccess zostanie wywołane z wartością zwracaną z funkcji C#. Jeśli wystąpi błąd, zostanie wywołany twój system onFailure (z wyjątkiem, jak sądzę,). I każdy z tych wywołań zwrotnych otrzyma również UserContext, który przekazujesz. –

+0

Wyjaśnienie i przykład z dodatkowymi parametrami naprawdę pomaga, dziękuję! Dostajemy na SUKCES, onFailure, kontekst i synchroniczną boolowską "za darmo" z usługą WCM, które są następnie dostępne (opcjonalnie) ustawione jako delegaci. –

Powiązane problemy