पुन: https://github.com/tildeio/rsvp.jsकैसे हैंडल विफलता कॉलबैक की श्रृंखला के साथ वादा को अस्वीकार कर दिया rsvp.js
मैं) एक समारोह है कि थोड़ी देर के लिए कुछ एक RSVP.Promise रिटर्न करता है और उसके बाद DoSomething (कहा जाता है। फिर, सफलता और विफलता कॉलबैक की एक श्रृंखला लौटाई गई वादे के साथ पंजीकृत है (नीचे कोड देखें)। जिस व्यवहार से मुझे उम्मीद थी कि था, अगर वादा पूरा हो गया है, तो के साथ पंजीकृत सफलता कॉलबैक की श्रृंखला को वादा किया जाएगा, और अगर वादा खारिज कर दिया गया है (विफल रहता है), की विफलता कॉलबैक निकाल दी जाएगी।
मुझे वादा पूरा होने के लिए अपेक्षित व्यवहार मिलता है, लेकिन मुझे व्यवहार मिलता है जब वादा अस्वीकार कर दिया जाता है। यही है, सफलता कॉलबैक जंजीर हैं और एक सफलता कॉलबैक का आउटपुट पर श्रृंखला में अगली सफलता कॉलबैक पर भेज दिया गया है। लेकिन ऐसा लगता है कि विफलता कॉलबैक जंजीर नहीं हैं। वे कोशिश/पकड़ ब्लॉक में पकड़ की तरह व्यवहार करते हैं ( कोड और नीचे आउटपुट देखें)।
क्या कोई इस व्यवहार को समझा सकता है? क्या यह वास्तव में काम करने का अनुमान है, या यह है जिस तरह से rsvp.js एक अस्वीकार/असफल वादे को संभालता है जिसमें विफलता कॉलबैक की एक श्रृंखला है जिसके साथ पंजीकृत है? मैं अब कोशिश करने और इसे समझने के लिए वादे/ए + स्पेक पढ़ रहा हूं, लेकिन अगर कोई इस चीज को अपने सिर के ऊपर से जानता है, तो आपकी स्पष्टीकरण सुनना अच्छा लगेगा। अग्रिम में धन्यवाद।
jsfiddle: उत्पादन मैं मिलता है और उम्मीद http://jsfiddle.net/rylie/VYSj7/2/
doSomething() // returns an RSVP.Promise object
.then(
function(message) { console.log("then success 1: " + message); return "from success 1"; }, // success callback
function(message) { console.log("then failure 1: " + message); return "from failure 1"; } // failure callback
)
.then(
function(message) { console.log("then success 2: " + message); return "from success 2"; }, // success callback
function(message) { console.log("then failure 2: " + message); return "from failure 2"; } // failure callback
)
.then(
function(message) { console.log("then success 3: " + message); return "from success 3"; } // success callback
)
.then(
null,
function(message) { console.log("then failure 4: " + message); return "from failure 4"; } // failure callback
)
.then(
function(message) { console.log("then success 5: " + message); return "from success 5"; }, // success callback
function(message) { console.log("then failure 5: " + message); return "from failure 5"; } // failure callback
);
** जब वादा निभाया है (सफल होता है), इस है:
then success 1: Promise fulfilled!
then success 2: from success 1
then success 3: from success 2
then success 5: from success 3
** जब वादा अस्वीकार कर दिया है (विफल रहता है), यह आउटपुट मुझे मिलता है:
then failure 1: Promise rejected!
then success 2: from failure 1
then success 3: from success 2
then success 5: from success 3
** यह मेरी अपेक्षा है (अस्वीकार पर/विफल वादा):
then failure 1: Promise rejected!
then failure 2: from failure 1
then failure 4: from failure 2
then failure 5: from failure 4
अच्छा विवरण, Esailija: हालांकि, अगर इस तरह के विधि प्रदान नहीं की है, तो आप कर सकते हैं (या होना चाहिए, तो दुर्भाग्य से कार्यान्वयन कि प्रोटोटाइप का उपयोग नहीं करते हैं)! धन्यवाद। – RBR