2014-10-08 10 views
6

मैं इस सवाल से पूछने के लिए शर्मिंदा हूं क्योंकि ऐसा लगता है कि यह इतना स्पष्ट होना चाहिए, लेकिन मैं एसिंक समस्याओं से निपटने पर काफी कमजोर हूं, और मैं आगे बढ़ने के तरीके पर उलझन में हूं।जावास्क्रिप्ट ऑब्जेक्ट (पीएसए पार्स का उपयोग करके) सीएसवी से पार्स किए गए डेटा को पुनर्प्राप्त करें

मैं एक दूरस्थ सीएसवी पार्स करने के लिए पापा पार्स (http://papaparse.com/docs.html#remote-files) का उपयोग कर रहा हूं। मैं बाद में उपयोग करने के लिए किसी ऑब्जेक्ट में पार्स का परिणाम छीनना चाहता हूं। यहां मेरा कोड है:

var dataset = {};  

    Papa.parse("http://path/to/some.csv", { 
     download: true, 
     dynamicTyping: true, 
     complete: function(results) { 
     dataset = results.data; 
     } 
    }); 

console.log(dataset); 

यह निश्चित रूप से, कंसोल पर एक खाली ऑब्जेक्ट लॉग इन किया गया है। डेटासेट का उपयोग करने पर कोई भी प्रयास काम नहीं करता है, बेशक, डेटासेट ऑब्जेक्ट को कोड निष्पादित होने तक वास्तव में डेटा प्राप्त नहीं हुआ है। क्या कोई मुझे रिफैक्टर या व्याख्या करने में मदद कर सकता है कि मैं इससे कैसे निपटता हूं?

उत्तर

19

क्या कोई कारण है कि डेटासेट चर को फ़ंक्शन के बाहर उपयोग करने की आवश्यकता है? यह सुनिश्चित करने का सबसे आसान तरीका है कि डेटासेट पॉप्युलेट किया गया है, 'पूर्ण' फ़ंक्शन में डेटासेट को ठीक करने के बाद, ठीक है, पॉप्युलेट किया गया है।

एक वैकल्पिक तो जैसे एक कॉलबैक जोड़ने के लिए है:

function doStuff(data) { 
    //Data is usable here 
    console.log(data); 
} 

function parseData(url, callBack) { 
    Papa.parse(url, { 
     download: true, 
     dynamicTyping: true, 
     complete: function(results) { 
      callBack(results.data); 
     } 
    }); 
} 

parseData("tests/sample.csv", doStuff); 
+0

यह ठीक पुनरभिविन्यास मैं जरूरत थी। मैं अभी भी कॉलबैक और एसिंक के बारे में सीख रहा हूं, इसलिए इससे वास्तव में मेरे लिए इसे नष्ट करने में मदद मिली। धन्यवाद!!!! – TheNovice

+0

यूप! कॉलबैक में जोड़ने वाले आकर्षण की तरह काम किया! धन्यवाद! – WizzyBoom

संबंधित मुद्दे