2016-10-26 4 views
0

im пытается сделать отзывчивый голос зачитывать каждое предложение, и между каждым показанием должен быть 1 минута.Отзывчивый плагин jQuery для чтения не работает внутри цикла

   function read(){ 

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


      var a = [1,2,3]; 

      $(a).each(function(){ 

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

      }); 

В настоящее время он играет только один раз и в двух других шлейфах получают ошибку

неперехваченной (обещанию) DOMException: запрос воспроизведения() был прерван вызовом паузы().

я тоже не могу сделать что-либо переданное ему прочитать динамически

ответ

0

Может быть проблема в том, что вы использовали .each() метод не правильно, потому что $(a) пытаются предназначаться селектор, но не массив.

jQuery.each() doc От:

jQuery.each (массив, вызов) где

массив: Тип: Array - Массив перебрать.

callback: Тип: Function (Integer indexInArray, Object value) - Функция, которая будет выполняться на каждом объекте.

Итак, попробуйте следующее:

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

Надежда это поможет вам.

+0

im все еще получаю сообщение об ошибке: нечистота (в обещании) DOMException: запрос play() был прерван вызовом pause(). –

+0

Да, у меня такая же проблема. – Granit

0

OK, после того, как прибегая к помощи немного я нашел этот ответ

setTimeout inside $.each()

В принципе, вам нужно, чтобы увеличить таймер.

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

Итак, первый цикл - 1 секунда. Петля 2 будет 2 секунды.

Вот мой пример кода:

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

Каждая речь занимает около 5 секунд. Я использую 6 секунд, потому что хочу добавить паузу в каждую строку.

 Смежные вопросы

  • Нет связанных вопросов^_^