कृपया इसे इस पर जांचें: http://jsfiddle.net/wmaokqh3/

<div id="message">
</div>
<audio id="bgm" src="http://www.freesfx.co.uk/rx2/mp3s/9/10780_1381246351.mp3">
</audio>

<div id="count">
</div>


function Typer() {
  var dfd = $.Deferred();
  var srcText = 'EXAMPLE';
  var i = -(1);
  var result = '';
  setInterval(function() {
      if (i == srcText.length) {
        clearInterval(this);
        dfd.resolve();
      };
      $("#count").append('<br>i =' + i + ' , ');
      i++;
      result += srcText[i].replace("\n", "<br />");
      $("#message").html(result + '---' + i + ' , ');
    },
    1000);
  return dfd.promise();
}
function playBGM() {
  var playsound = $.Deferred();
  $('#bgm')[0].play();
  $("#bgm").on("ended", function() {
    playsound.resolve();
  });
  return playsound.promise();
}
function thirdFunction() {
  alert('third function');
}
Typer().then(playBGM).then(thirdFunction);
1
sqlchild 4 अप्रैल 2018, 07:04

3 जवाब

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

सुनिश्चित नहीं हैं कि आपने clearInterval(this) करना कहाँ सीखा, लेकिन यह सही नहीं है। this का वर्तमान अंतराल से कोई लेना-देना नहीं है। अंतराल को रद्द करने के लिए आपको जेनरेट की गई आईडी का उपयोग करने की आवश्यकता है।

var myInterval = window.setInterval(  )

और आपके कोड में आपको उस आईडी का उपयोग करने की आवश्यकता है

clearInterval(myInterval)
3
epascarello 4 अप्रैल 2018, 04:07

आपको बाद में इसे साफ़ करने के लिए setInterval को एक वैरिएबल को असाइन करना होगा:

var result = '';
const myInterval = setInterval(function() {
  if (i == srcText.length) {
    clearInterval(myInterval);
1
CertainPerformance 4 अप्रैल 2018, 04:07

तो clearInterval(this) कोडिंग में कुछ भी नहीं है clearInterval फंक्शन को एक वेरिएबल देने के लिए पैरांथेसिस में एक वेरिएबल की आवश्यकता होती है, आपको इंटरवल फंक्शन को एक वेरिएबल में सेट करना चाहिए जो इस तरह होना चाहिए var inter = window.setInterval(function() {}, 1000);

1
AquaDev 4 अप्रैल 2018, 04:48