मुझे पता है कि Dojo Deferreds के लिए अनुशंसित उपयोग केस dojo.when (def) या def.then() का उपयोग करना है और डिफरर्ड को हल करने के लिए कॉलबैक प्रदान करना है। हालांकि, कभी-कभी मैं दृश्यमान में भाग जाता हूं जहां मुझे वर्तमान धागे के साथ जारी रखने से पहले इसे पूरा करने के लिए वास्तव में प्रतीक्षा करने की आवश्यकता होती है। यहाँ एक उदाहरण (http://jsfiddle.net/DG3Ax/2/ पर पूर्ण उदाहरण)डोजो डेफर्रेड का समाधान होने तक मैं कैसे रोक सकता हूं?
function getSomething() {
var def = getSomeDeferred();
def.then(function(result) {
dojo.place("<li>def.then() = " + result + "</li>", "output");
});
return def.gimmeTheResultNow();
}
dojo.place("<li>getSomething() = " + getSomething() + "</li>", "output");
जाहिर Deferred.gimmeTheResultNow()
मौजूद नहीं है, लेकिन है कि कार्यक्षमता मैं तलाश कर रहा हूँ है। मेरे पास कोड कॉलिंग का नियंत्रण नहीं है कुछ(), इसलिए मैं इसे एक डिफरर्ड को संभाल नहीं सकता; इसे वास्तविक परिणाम की आवश्यकता है।
मुझे पता है कि xhrGet() में एक सिंक पैरामीटर है जो मुझे लगता है कि यह एक एजेक्स कॉल था, लेकिन यह आवश्यक नहीं है। क्या इसे पूरा करने का कोई और तरीका है?
मुझे नहीं पता कि आपका स्थगित क्या करता है, लेकिन ऐसा लगता है कि आपको इससे छुटकारा पाना चाहिए। Deferreds गैर-अवरुद्ध, async व्यवहार के लिए हैं। – bfavaretto