मेरे पास डोजो/डिफरर्ड के बारे में एक प्रश्न है। मैं सवाल के साथ शुरू करेंगे, तो क्या मैं कर रहा हूँ के बारे में अधिक विस्तार में जाने:Dojo Deferred ऑब्जेक्ट के बाद सामान्य कोड को निष्पादित करने के लिए कैसे हल किया गया है या अस्वीकार कर दिया गया है?
वहाँ आस्थगित, एक तरह से में एक finally
ब्लॉक की तरह के परिणाम की परवाह किए बिना कोड की उसी तर्ज पर अमल करने का कोई तरीका है try...catch
कथन? जो मैंने पढ़ा है, उससे ऐसा प्रतीत नहीं होता है, लेकिन शायद मैं दस्तावेज को गलत समझ रहा हूं और एसओ समुदाय के साथ इसे सत्यापित करना चाहता हूं।
यहाँ मैं क्या कर रहा है:
डोजो 1.9 (भी 1.8 में काम करता है) में, मैं एक dojox.widget.Standby (एक लोडिंग ओवरले) एक contentPane लिए कुछ डेटा लोड करने से पहले का दृष्टांत। आस्थगित कॉल पूरा हो जाने के बाद, मैं अपने ओवरले को छिपाने के लिए के रूप में नीचे दिखाया गया हैं:
standby = new Standby({
... // standby props
});
this.addChild(standby);
standby.show();
queryResults = grid.store.query({
... // query props
});
queryResults.then(function (results) {
if (results) {
... // do something
}
standby.hide();
}, function (error) {
... // handle error
standby.hide();
});
यह ठीक काम करता है; हालांकि, संभवतः, मेरे पास स्थगित पूर्ण होने के बाद कुछ प्रक्रियाएं लागू हो सकती हैं जो केवल एक पंक्ति के बजाय कोड की कई पंक्तियां लेती हैं और मैं कोड की उन पंक्तियों को डुप्लिकेट नहीं करना चाहूंगा। एक विकल्प होगा एक निजी समारोह बनाना और बस इसे प्रत्येक ब्लॉक में एक लाइनर के साथ बुलाओ, लेकिन यदि कोई बेहतर तरीका है, तो मैं उस मार्ग को लेना चाहता हूं।
अग्रिम धन्यवाद!
दोनों आप और @Lucas मेरे सवाल का जवाब दे दिया है के बाद से अपने जवाब के दोनों सही हैं। मैंने @ लुकास को 'सर्वश्रेष्ठ उत्तर' दिया क्योंकि मुझे लगता है कि 'हमेशा' एक अतिरिक्त 'तत्काल' से एक स्पष्ट इरादा का प्रतिनिधित्व करता है। लेकिन मैंने आपकी जवाब को अपनी शुद्धता के लिए वोट दिया। – David