2012-02-21 26 views
7

Tôi có những điều sau đây (từ Tridion PowerTools), có tên người dùng từ CoreService khi một số JavaScript chạy.Tất cả các thông số này khi gọi một phương thức web WCF từ Anguilla JavaScript có nghĩa là gì?

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 bên: (C# .svc)

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

này sẽ gửi một cuộc gọi không đồng bộ:

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

Trong khi này gán một chức năng khác nhau để xử lý các phản ứng:

Function.getDelegate(this, this._handleUserInfo)

Nhưng nơi nào onSuccess, onFailure, bối cảnh và các Boolean đến từ trong: PowerTools.Model.Services.Example.GetUserInfo(onSuccess, onFailure, context, false)?

Chữ ký bốn tham số này không khớp với GetUserInfo() không có tham số trong mã dịch vụ. Tại sao thứ tự và bốn thứ này?

+0

Edit: màu sáng mà phần I bối rối. –

Trả lời

7

onSuccessonFailure là các chức năng gọi lại được chỉ định để xử lý phản hồi từ dịch vụ WCF.

Giả sử đây là mã từ dự án PowerTools, có phương pháp JavaScript được tạo tự động hoạt động như một phương thức proxy cho dịch vụ WCF (nguồn của dịch vụ là here) được gọi là GetUserInfo().

Trong đó, bạn có thể thực sự thấy cuộc gọi đến CoreService. Điều đó sẽ giải thích cho bạn bản đồ của các tham số proxy.

  1. onSuccess là chức năng để xử lý các phản ứng của các dịch vụ WCF
  2. onFailure được các chức năng để chạy nếu cuộc gọi không thành
  3. context là một biến sẽ được chuyển trở lại chức năng gọi lại của bạn, vì vậy bạn có thể sử dụng nó để vượt qua mọi thứ xung quanh.
  4. false là liệu cuộc gọi là đồng bộ hoặc không

Nếu dịch vụ WCF của bạn là để có các thông số, proxy được tạo ra sẽ tạo thành một chữ ký khác nhau, một cái gì đó giống như

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

Vì vậy, nếu hàm C# thành công, onSuccess của bạn sẽ được gọi với giá trị trả về từ hàm C#. Nếu có sự cố, onFailure của bạn sẽ được gọi (ngoại trừ tôi nghĩ). Và một trong các cuộc gọi lại đó cũng sẽ nhận được userContext mà bạn truy cập. –

+0

Giải thích và ví dụ với các tham số bổ sung thực sự hữu ích, cảm ơn! Chúng tôi nhận được onSuccess, onFailure, context, và boolean đồng bộ "miễn phí" với dịch vụ WCM, sau đó có sẵn để được (tùy chọn) thiết lập như là đại biểu. –

Các vấn đề liên quan