2015-04-24 10 views
5

से मूल्य मैं इस समारोह है:वापसी गणना जावास्क्रिप्ट FileReader ऑनलोड घटना

function doStuff(range, file) { 
    var fr = new FileReader(); 
    var hash = ''; 
    fr.onload = function (e) { 
     var out = "stuff happens here"; 
     hash = asmCrypto.SHA256.hex(out); 
     return hash; 
    }; 
    fr.readAsArrayBuffer(file); 
    return hash; 
} 

अभी, समारोह से पहले ऑनलोड घटना, समाप्त हो गया है तो doStuff हमेशा रिटर्न "" पूरा करता है। मुझे लगता है कि मुझे कॉलबैक की ज़रूरत है, लेकिन मैं जावास्क्रिप्ट के लिए नया हूं, और मैं इस मामले में इसे लागू करने के तरीके के बारे में अपने दिमाग को लपेट नहीं सकता।

उत्तर

8

फ़ाइल रीडर का उपयोग कर फ़ाइल पढ़ने एसिंक्रोनस ऑपरेशन है। फ़ाइल रीडर के onload फ़ंक्शन के अंदर अपना तर्क रखें।

function doStuff(range, file) { 
    var fr = new FileReader(); 
    fr.onload = function (e) { 
     var out = "stuff happens here"; 
     hash = asmCrypto.SHA256.hex(out); 
     /* Place your logic here */ 
    }; 
    fr.readAsArrayBuffer(file); 
} 

आप एक कॉलबैक फ़ंक्शन भी पास कर सकते हैं जिसे फ़ाइल पढ़ने के बाद निष्पादित किया जाएगा।

function doStuff(range, file, callback) { 
    var fr = new FileReader(); 
    fr.onload = function (e) { 
     var out = "stuff happens here"; 
     hash = asmCrypto.SHA256.hex(out); 
     /* Assuming callback is function */ 
     callback(hash); 
    }; 
    fr.readAsArrayBuffer(file); 
} 
+1

वोट देने का कारण क्या है? –

+1

कोई विचार नहीं। इस जवाब के साथ कुछ भी गलत नहीं लगता है। – Phylogenesis

+1

@ फिजोजेनेसिस यहां भी वही है। मुझे नहीं पता कि पीपीएल मतदान क्यों कर रहा है :( –

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