पर असफल तर्क को अनुकूलित करने, सर्वर पर हैंडलिंग अपवाद, मैं सर्वर पर एक अपवाद होने पर क्लाइंट को पारित त्रुटि ऑब्जेक्ट को कस्टमाइज़ करने में सक्षम होने की उम्मीद कर रहा हूं। लॉगिन सफल होता हैक्लाइंट
hub.server.login(username, password).then(function(result) {
// use 'result'
}, function(error) {
// use 'error'
});
हैं, 'परिणाम' सर्वर पर लॉग इन विधि के रिटर्न मान है:
मैं सफलता और विफलता को संभालने के लिए क्लाइंट पर 'फिर' समारोह का उपयोग कर रहा। अगर लॉगिन विफल रहता है, तो मैंने 'कस्टम अपवाद' का अपवाद फेंक दिया। यह 'कोड' संपत्ति के साथ एक अपवाद है। अपवाद के संदेश संपत्ति -
if (!IsValidLogin(username, password))
throw new CustomException { Code: "BADLOGIN", Message: "Invalid login details" };
अगर मैं अपवाद सक्षम विस्तृत, क्लाइंट पर 'त्रुटि' तर्क 'अमान्य लॉगइन विवरण' है।
क्या कोई तरीका है कि मैं स्ट्रिंग से एक जटिल ऑब्जेक्ट में त्रुटि परिणाम को चुनिंदा रूप से बदल सकता हूं? यानी यदि 'कस्टम अपवाद' को हब विधि में फेंक दिया गया है, तो क्लाइंट-साइड विफल हैंडलर के लिए एक {कोड: [...], संदेश: [...]} ऑब्जेक्ट लौटाएं?
यह प्रदर्शित करना चाहिए मैं ग्राहक पर देखना चाहते हैं क्या:
hub.server.login(username, password).then(function(userInfo) {
alert("Hello " + userInfo.Name);
}, function(err) {
if (err.Code === "BADLOGIN.USERNAME")
alert("Unrecognised user name");
else if (err.Code === "BADLOGIN.PASSWORD");
alert("Invalid password");
else
alert("Unknown error: " + err.Message);
});
(नोट 'कोड' और 'अं' पर 'संदेश' गुण)।
आप त्रुटि को फेंकने के बजाय एक कस्टम ऑब्जेक्ट क्यों नहीं लौटते? –
यह सिर्फ उतना ही साफ नहीं होगा। मुझे लगता है कि मुझे पता है कि आपका क्या मतलब है, किसी प्रकार की रिटर्न ऑब्जेक्ट जिसमें 'परिणाम' और 'त्रुटि' संपत्ति है - जिसमें से एक सेट किया जाएगा, जिसमें से एक शून्य होगा। मैंने पहले इसका उपयोग किया है, लेकिन मैं बस सोच रहा हूं कि अगर मैं सफलता प्राप्त कर सकता हूं और 'तत्काल' कॉलबैक की प्रकृति के कारण क्लाइंट पर विफल लॉगिन विफल हो सकता है। – Barguast
i.e. .then (फ़ंक्शन (परिणाम) {if (result.error) {// विफल} अन्य {// सफलता}}); यह काम करेगा, लेकिन यह अलग सफलता और विफलता शाखा वाले वादे के सामान्य पैटर्न का पालन नहीं करेगा। – Barguast