javascript - Deferred/promise confusion and implementation -
इस सवाल का पहले से ही एक उत्तर है: < / P>
- 5 जवाब
अगर मैं लागू करना चाहता हूं मेरे द्वारा स्थगित, क्या यह (आंतरिक तर्क समझने की कोशिश कर रहा है) करने का एक सही तरीका होगा:
क्या आचरण की गणना एक व्यवहार पद्धति के रूप में की जाती है?
आस्थगित और वादा?
फ़ंक्शन डिफरड () {var d = {}, f = {}, a = {}, state = 'लंबित'; वापसी {हल: कार्य () {state = 'हल'; A.fn.apply (a.context, तर्क); D.fn.apply (d.context, तर्क); }, अस्वीकार करें: फ़ंक्शन () {state = 'rejected'; A.fn.apply (a.context, तर्क); F.fn.apply (f.context, तर्क); }, किया: फ़ंक्शन (fn, प्रसंग) {d = {fn: fn, context: context}; इस वापसी; }, विफल: फ़ंक्शन (fn, प्रसंग) {f = {fn: fn, context: context}; इस वापसी; }, हमेशा: फ़ंक्शन (fn, प्रसंग) {a = {fn: fn, context: context}; इस वापसी; }, स्थिति: राज्य}}
आवेदन उदाहरण:
var obj = deferred (); Obj.done (function (arg) {console.log ('हम यहाँ हैं, क्यों? -', आरजीआर);}, खिड़की) .ways (फ़ंक्शन (आर्ग) {console.log ('प्रिंट करें कि किसी भी मामले में। और कुछ विवरण: ', आर्ग);}, खिड़की) .फ़ाइल (फ़ंक्शन (आर्ग) {console.log (' हम यहां असफल रहे हैं, क्यों? - ', आरजी);}), खिड़की; Obj.reject ('कुछ तर्क'); Obj.resolve ({तर्क: 'हुर्रे!'});
अगर मैं खुद से स्थगित करना चाहता हूं, तो क्या यह सही तरीका है नहीं?
नहीं, आपका कोड कुछ महत्वपूर्ण बिंदुओं को याद करता है:
- एक वादा / स्थगित केवल एक ही परिणाम का प्रतिनिधित्व करता है इसका पूरा होने के बाद राज्य को बदला नहीं जाना चाहिए (पूर्ण या अस्वीकार कर दिया गया है)।
- कोई कॉलबैक स्थापित होने पर कोई फर्क नहीं पड़ता, परिणाम के साथ जितनी जल्दी हो सके इसे अंजाम किया जाएगा। आपका कोड ऐसा करने में विफल हो जाता है जब परिणाम पहले से ही आ गया है।
- कितने कॉलबैक इंस्टॉल किए जाते हैं, इन सभी को निष्पादित किया जाएगा। आपका कोड केवल एक एकल कॉलबैक को संग्रहित करने की अनुमति देता है।
आप पर एक नज़र रखना चाह सकते हैं।
इसके अलावा, एक वादे के लिए आप एक इंटरऑपरेबल को लागू करना चाहते हैं तब
चेनिंग के लिए विधि, जिसका व्यवहार में वर्णित है।
क्या आचरण की गणना एक व्यवहार पद्धति के रूप में होती है?
हाँ, आप उन्हें पर्यवेक्षक या आगंतुक पैटर्न के मिश्रण के रूप में भरोसा कर सकते हैं।
आस्थगित और वादा के बीच क्या अंतर है?
सामान्य तौर पर, एक आस्थगित प्रदान करता है पूरा करने या अस्वीकार करने के तरीकों, जबकि एक वादा है कि कॉलबैक को स्थापित करने के लिए इंटरफेस (वादा को हल करने की क्षमता के बिना)। विवरण के लिए देखें।
Comments
Post a Comment