/ / अपवाद क्या है "ArgumentError: एक वादा पहले से ही जंजीर हो गया है" मतलब है, और मैं इसे कैसे डीबग कर सकता हूं? - voltrb

अपवाद क्या है "ArgumentError: एक वादा पहले से ही जंजीर हो गया है" मतलब है, और मैं इसे कैसे डीबग कर सकता हूं? - voltrb

मैं वोल्ट के साथ काम कर रहे छोटे पागल जा रहा हूँपल। जिस क्षण मैं कुछ और जटिल करने की कोशिश करता हूं, मैं अपवाद प्राप्त करता हूं "ArgumentError: ब्राउज़र कंसोल में एक वादा पहले से ही जंजीर हो गया है"।

स्टैक ट्रेस कुछ भी इंगित नहीं करता है जिसे मैं उपयोगी समझ सकता हूं।

यह त्रुटि वास्तव में मतलब है, और मैं कारण को ट्रैक करने की कोशिश करने के बारे में कैसे जा सकता हूं?

मैं कुछ कोड पोस्ट करता हूं, लेकिन इनमें से कुछ त्रुटियां पृष्ठ लोड पर दिखाई देती हैं, जहां समस्या है, इस पर कोई संकेत नहीं है, इसलिए मुझे पूरे ऐप को पोस्ट करने की आवश्यकता है: /

उत्तर:

जवाब के लिए 3 № 1

वोल्ट ओपल के वादे कार्यान्वयन का उपयोग करता है, जो मैंमानना ​​जेएस भूमि में ए + स्पेक पर आधारित है। आपकी देखरेख में त्रुटि यह है क्योंकि एक वादे में केवल एक ही .then या .fail ब्लॉक हो सकता है। प्रत्येक .then या .fail एक नया वादा वापस कर देगा कि आप फिर से बंद कर सकते हैं।

तो आप यह कर सकते हैं:

promise = Promise.new
promise2 = promise.then do
..
end
promise2.then do
..
end

(ध्यान दें कि मैं पहले व्यक्ति को फिर से बंद करने के बजाय वादा 2 असाइन कर रहा हूं)

लेकिन आप ऐसा कुछ नहीं कर सकते हैं:

promise = Promise.new
promise.then do
...
end

promise.then do
..
end

(ध्यान दें कि मैंने कैसे बुलाया। फिर एक बार से अधिक वादे पर)

पहले लिखने का एक और कॉम्पैक्ट तरीका अंत के चेन को बंद करना है

promise = Promise.new

promise.then do
..
end.then do
..
end.fail do
..
end

वोल्ट बाइंडिंग एक वादा की उम्मीद है कि नहीं किया गया हैपर जंजीर साथ ही, मुझे लगता है कि मैं इसे काम कर सकता हूं जहां आप कई बार श्रृंखला कर सकते हैं, हालांकि मैंने इसके सभी प्रभावों के बारे में सोचा नहीं है, इसलिए मैं गलत हो सकता हूं। अगर मुझे कुछ समय मिलता है तो मैं एक नया वादा कार्यान्वयन लिख सकता हूं जो कर सकता है इसे संभाल लें। अगर आप अभी भी उस त्रुटि को देख रहे हैं और उपरोक्त यह नहीं बताता है कि वहां क्यों है, तो मुझे बताएं। धन्यवाद!