javascript - Return data from Closure Within Block Within Function -


मैंने अपना जावास्क्रिप्ट इस प्रकार सेटअप किया है

  function getData (uri) {var $ result; Var डेमोएपीआई = यूरी; $ .getJSON (डेमोएपीआई, फ़ंक्शन (डाटा) {$ .ईच (डेटा, फ़ंक्शन (कुंजी, वैल) {नाम [कुंजी] = वैल ["नाम"]; नंबर। पश (वैल ["नंबर"]);}) ;}}) किया (कार्य () (के लिए (i = 0; i & lt; names.length; i ++) {var tmp = नया अर्रे (नाम [i], संख्या [i]); परिणाम push (tmp); } वापसी परिणाम;}); }   

समस्या है, इस सेटअप के साथ मैं फ़ंक्शन का उपयोग नहीं कर सकता:

  var मान = getData ('/ users');   

के रूप में return स्टेटमेंट $। getJSON ब्लॉक के भीतर एक क्लोजर में है, अगर मैं return < / कोड> ब्लॉक के बाद कहा कि यह एक खाली सरणी देता है क्योंकि यह एजेक्स कॉल पूरा होने से पहले कॉल किया जाता है। अगर मैं $। Ajax () का उपयोग करने का प्रयास करता हूं तो मुझे एक ही चुनौती का सामना करना पड़ेगा। मुझे अपने फ़ंक्शन getData () से उत्पन्न सरणी लौटने में मदद की ज़रूरत है।

जैसा कि आपने पाया है, आप एसिंक्रोनस फ़ंक्शंस से डेटा भरोसेमंद रूप से वापस नहीं कर सकते। डेटा प्राप्त होने पर आपको कॉलबैक फ़ंक्शन निष्पादित करने की आवश्यकता होती है। इसे आज़माएं:

  फ़ंक्शन getData (uri, callbackFn) {var $ परिणाम; $ .getJSON (डेमोएपीआई, फ़ंक्शन (डाटा) {$ .ईच (डेटा, फ़ंक्शन (कुंजी, वैल) {नाम [कुंजी] = वैल ["नाम"]; नंबर। पश (वैल ["नंबर"]);}) ;}}) किया (कार्य () (के लिए (i = 0; i & lt; names.length; i ++) {var tmp = नया अर्रे (नाम [i], संख्या [i]); परिणाम push (tmp); } CallbackFn (परिणाम);}); } GetData ('/ users', फ़ंक्शन (परिणाम) {// लौटे हुए डेटा के साथ क्या आवश्यक है ...});    

Comments

Popular posts from this blog

Pass DB Connection parameters to a Kettle a.k.a PDI table Input step dynamically from Excel -

multithreading - PhantomJS-Node in a for Loop -

c++ - MATLAB .m file to .mex file using Matlab Compiler -