मैं ऑडियो विज़ुअलाइज़ेशन के साथ एक म्यूजिक प्लेयर बनाने की कोशिश कर रहा हूं। मैं चाहता हूं कि यह काम करे जैसे जब मैं ट्रैक के नाम पर क्लिक करता हूं तो उस ट्रैक को खेलना शुरू कर देना चाहिए

<script src="main.js"> </script>
<script src="/circular-audio-wave.min.js"></script>
<script>

    var sel2= 'audio/audio3.mp3',
        sel1 = ''; 
    $( "li" ).click(function() {   
        sel1 =  ($(this).data('val'));     
        sel2 = 'audio/' + sel1; 

        console.log(sel2);
    });

    let wave = new CircularAudioWave(document.getElementById('chart-container'));
    wave.loadAudio(sel2);
</script>

मैं चाहता हूं कि sel2 मान jQuery फ़ंक्शन के बाहर भेजा जाए ताकि इसका उपयोग 'wave.loadAudio (sel2);' द्वारा किया जा सके। इस स्क्रिप्ट को चलाने पर मुझे केवल 'ऑडियो/ऑडियो3.mp3' बज रहा है क्योंकि मैंने यह मान पहले वेरिएबल को दिया है। मैं चाहता हूं कि यह sel2 का नया मान सेट करे (जो भी मैं क्लिक करूं और फिर उसे wave.loadAudio(sel2) पर भेज दूं) ताकि हर बार नए ट्रैक पर क्लिक करने पर मुझे वह ट्रैक मिल जाए।

0
Pratyush Narain 17 जुलाई 2019, 11:10

1 उत्तर

सबसे बढ़िया उत्तर

आप वास्तव में यह नहीं समझते हैं कि जावास्क्रिप्ट में कॉलबैक फ़ंक्शन कैसे काम करता है, जो जावास्क्रिप्ट के एसिंक्रोनस पक्ष हैं। आपका wave.loadAudio(sel2) हमेशा audio/audio3.mp3 प्राप्त करेगा क्योंकि आपके क्लिक फ़ंक्शन से पहले लोड किया गया है। सरल उदाहरण देखें:

console.log('First');
setTimeout(function(){
  console.log('Second')
},0);
console.log('Third');

यदि आप इस स्क्रिप्ट को चलाते हैं तो आप देखेंगे: 'पहला', 'तीसरा', 'दूसरा', क्योंकि Callback queue में कॉलबैक फ़ंक्शन जोड़ा जाता है, और जब call stack खाली होता है तो यह फ़ंक्शन महसूस होता है, इसमें जिस तरह से कॉलबैक फ़ंक्शन गैर-अवरुद्ध के रूप में उपयोग किया जा सकता है। तो आपके उदाहरण में आपको बॉडी क्लिक फ़ंक्शन में wave.loadAudio(sel2) जोड़ना चाहिए:

var sel2= 'audio/audio3.mp3';
let wave = new CircularAudioWave(document.getElementById('chart-container'));
sel1 = ''; 
   $( "li" ).click(function() {
     sel1 =  ($(this).data('val'));
     sel2 = 'audio/' + sel1; 
     wave.loadAudio(sel2);
});

बीटीडब्ल्यू आपके कोड में और त्रुटियां हैं। डिफ़ॉल्ट पैरामीटर, तीर फ़ंक्शंस का उपयोग करने का प्रयास करें, वैश्विक चर (sel1) घोषित न करें, var का उपयोग करने से बचें, sel1 को क्लिक फ़ंक्शन के अंदर घोषित किया जाना चाहिए बाहर नहीं।

2
Mat.Now 17 जुलाई 2019, 08:54