2012-02-21 5 views
7

मेरे पास निम्नलिखित है (Tridion PowerTools से), जो कुछ जावास्क्रिप्ट चलाते समय CoreService से उपयोगकर्ता नाम प्राप्त करता है।एंगुइला जावास्क्रिप्ट से डब्लूसीएफ वेब विधि को कॉल करते समय इन सभी पैरामीटर का क्या अर्थ है?

जावास्क्रिप्ट (एंगुइला):

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 पक्ष:

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

: (सी # .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, संदर्भ, और बूलियन में से आता है?

यह चार-पैरामीटर हस्ताक्षर सेवा कोड में नो-पैरामीटर GetUserInfo() से मेल नहीं खाता है। वह आदेश और इन चार क्यों?

+0

संपादित कुछ है के बारे में उलझन में था। –

उत्तर

7

onSuccess और onFailure डब्ल्यूसीएफ सेवा से प्रतिक्रिया को संभालने के लिए असाइन किए गए कॉलबैक फ़ंक्शंस हैं।

इस मान लिया जाये कि PowerTools परियोजना से कोड है, वहाँ एक स्वत: जनरेट JavaScript विधि है कि एक WCF सेवा (सेवा के स्रोत here है) विधि GetUserInfo() कहा जाता है के लिए एक प्रॉक्सी पद्धति के रूप में कार्य करता है।

वहां आप वास्तव में CoreService को कॉल देख सकते हैं। यह आपको प्रॉक्सी पैरामीटर के मैपिंग को समझाएगा। , तो आप ऐसा

  1. onSuccess समारोह WCF सेवा
  2. onFailure की प्रतिक्रिया पर कार्रवाई करने के अगर कॉल के विफल होने
  3. context एक चर कि वापस अपने कॉलबैक कार्यों में पारित हो जाएगा चलाने के लिए समारोह है चीजों को पारित करने के लिए इसका उपयोग कर सकते हैं। जो हिस्सा मैं स्पष्ट किया:
  4. false कि क्या कॉल तुल्यकालिक है या नहीं

अपने WCF सेवा मानकों को तय लग रही थी, तो उत्पन्न प्रॉक्सी अलग हस्ताक्षर फार्म होगा, जैसे

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

तो यदि सी # फ़ंक्शन सफल हो गया है, तो आपके ऑनस्यूशन को सी # फ़ंक्शन से वापसी मान के साथ बुलाया जाएगा। यदि कोई विफलता है, तो आपकी ऑनफेलर को कॉल किया जाएगा (अपवाद के साथ मुझे लगता है)। और इनमें से किसी भी कॉलबैक में आपके द्वारा पास किए गए उपयोगकर्ता कॉन्टेक्स्ट को भी प्राप्त किया जाएगा। –

+0

अतिरिक्त पैरामीटर के साथ स्पष्टीकरण और उदाहरण वास्तव में मदद करता है, धन्यवाद! हमें डब्ल्यूसीएम सेवा के साथ "मुक्त, विफलता, संदर्भ, और सिंक्रोनस बूलियन" मुफ्त में "मिलता है, जो तब (वैकल्पिक रूप से) प्रतिनिधियों के रूप में सेट होने के लिए उपलब्ध होते हैं। –