var done = this.async()
और done(blah)
अतुल्यकालिक कॉल (जैसे $.get
) एक तुल्यकालिक समारोह के भीतर से दिलवाया एक मूल्य के वापस जाने के लिए एक चतुर चाल है।
एक उदाहरण देखते हैं:
var getText = function() {
return "hello";
};
var text = getText();
यह एक बिल्कुल स्पष्ट समारोह कॉल इसलिए यहाँ कोई पहेली है। हालांकि, अगर आपको getText() फ़ंक्शन में टेक्स्ट को अतुल्यकालिक रूप से लाने की आवश्यकता है तो क्या होगा?
var getText = function() {
return $.get('<some-url>', function(text) {
return text;
}); // ??????
};
getText()
करने के लिए कॉल पाठ आप प्राप्त करना चाहते हैं वापस नहीं करता है। यह jquery के वादे वस्तु देता है।
तो हम getText()
कैसे $.get()
कॉल से प्राप्त पाठ को वापस कर सकते हैं?
var getText = function() {
var done = this.async();
$.get('<some-url>', function(text) {
done(text);
});
};
var text = getText(); // you get the expected text
जादू, है ना?
मुझे अभी तक this.async()
कॉल के आंतरिक काम को नहीं पता है। मुझे नहीं पता कि लाइब्रेरी उस फ़ंक्शन को प्रदान करती है या नहीं, लेकिन आप देख सकते हैं कि बैकबोन। LayoutManager इस चाल का उपयोग करता है https://github.com/tbranyen/backbone.layoutmanager/blob/master/backbone.layoutmanager.js (this.async के लिए खोजें)।
इसके अलावा, टिम ब्रैनेन (रीढ़ की हड्डी लेआउटमैनेजर का लेखक) संक्षिप्त रूप से इसके वीडियो ट्यूटोरियल (http://vimeo.com/32765088 के आसपास 14:00 - 15:00) में इसके बारे में बात करता है। वीडियो में, टिम का कहना है कि बेन आलमैन उस चाल के साथ आया था। इस पर एक नज़र डालें https://github.com/cowboy/javascript-sync-async-foreach
मुझे लगता है कि यह एसिंक और सिंक फ़ंक्शन को मिश्रित करने के लिए एक सुंदर साफ चाल है।
चीयर्स,
स्रोत
2012-11-02 04:59:21
यह कोई अंतर्निहित कार्य नहीं है। यह कुछ पुस्तकालय/ढांचे द्वारा प्रदान किया जाना चाहिए। – user123444555621