¿Qué significan todos estos parámetros al llamar a un método web WCF desde JavaScript de Anguila?

StackOverflow https://stackoverflow.com/questions/9385892

  •  28-10-2019
  •  | 
  •  

Pregunta

Tengo lo siguiente (de Herramientas eléctricas Tridion), que obtiene un nombre de usuario del CoreService cuando se ejecuta algún JavaScript.

JavaScript (Anguila):

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);
};

Lado de CoreService:(C# .svc)

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

Esto envía una llamada asíncrona:

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

Mientras que esto asigna una función diferente para manejar la respuesta:

Function.getDelegate(this, this._handleUserInfo)

Pero, ¿de dónde vienenuccuccess, onFailure, context y Boolean?: PowerTools.Model.Services.Example.GetUserInfo(onSuccess, onFailure, context, false)?

Esta firma de cuatro parámetros no coincide con getUserInfo () sin parámetros en el código de servicio.¿Por qué esa orden y estas cuatro?

¿Fue útil?

Solución

El onSuccess y onFailure son las funciones de devolución de llamada que se asignan para manejar la respuesta del servicio WCF.

Suponiendo que se trata de código del proyecto PowerTools, existe un método JavaScript generado automáticamente que actúa como un método proxy para un servicio WCF (la fuente del servicio es aquí) método llamado GetUserInfo().

Allí puede ver la llamada al CoreService.Eso debería explicarle la asignación de los parámetros del proxy.

  1. onSuccess es la función para procesar la respuesta del servicio WCF
  2. onFailure es la función que se ejecutará si falla la llamada
  3. context es una variable que se devolverá a sus funciones de devolución de llamada, por lo que puede usarla para pasar cosas.
  4. false es si la llamada es sincrónica o no

Si su servicio WCF tomara parámetros, el proxy generado formaría una firma diferente, algo así como

PowerTools.Model.Services.Example.GetOtherInfo(param1, param2, onSuccess, 
                                               onFailure, context, false);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top