2016-10-26 3 views
0

Ich versuche, reaktionsschnelle Stimme aus jedem Satz zu lesen, und es muss eine 1 Minute Lücke zwischen den einzelnen Anzeigen sein.Responsive Stimme jquery Plugin funktioniert nicht innerhalb der Schleife

   function read(){ 

      responsiveVoice.speak('قلم','Arabic Female'); 
      } 


      var a = [1,2,3]; 

      $(a).each(function(){ 

      setTimeout(function(){ read(); }, 1000); 

      }); 

es zur Zeit nur einmal abgespielt und in den anderen beiden Schleifen Fehler immer

Uncaught (in Versprechen) DOMException: Das Spiel() Anforderung durch einen Anruf unterbrochen wurde() zu unterbrechen.

kann ich auch, dass Sie .each() Methode nicht korrekt verwendet dynamisch

Antwort

0

Vielleicht ist Problem an sie übergeben lesen sie nichts machen, weil $(a) versuchen Wähler aber nicht um ein Array zu zielen.

Von jQuery.each() doc:

jQuery.each (array, callback) wo

Array: Typ: Array - Das Array überlaufen.

Rückruf: Typ: Funktion (Integer indexInArray, Objektwert) - Die Funktion, die für jedes Objekt ausgeführt wird.

Also, versuchen Sie dies:

$.each(a, function(){ 
    setTimeout(function(){ 
     read(); 
    }, 1000); 
}); 

Hoffen, dass diese Ihnen helfen.

+0

ich bekomme immer noch den Fehler: Unbefangen (in Aussicht) DOMException: Die play() Anfrage wurde durch einen Aufruf von pause() unterbrochen. –

+0

Ja, ich habe das gleiche Problem. – Granit

0

OK, nachdem ein wenig Googeln fand ich diese Antwort

setTimeout inside $.each()

Grundsätzlich müssen Sie den Timer erhöhen.

$.each(a, function(i){ 
    setTimeout(function(){ 
     read(); 
    }, i*1000); 
}); 

Also erste Schleife ist 1 Sekunde. Loop 2 wird 2 Sekunden dauern.

Hier ist mein Beispielcode:

setTimeout(function(){ 
        console.log(text) 
        responsiveVoice.speak(text, 'Swedish Female', {rate: 0.7}, {pitch: 2}); 
       }, i*6000); 

Jede Rede dauert ca. 5 Sekunden. Ich benutze 6 Sekunden, weil ich jede Zeile etwas Pause hinzufügen möchte.

Verwandte Themen