响应式语音jquery插件不在循环内部工作

时间:2016-10-26 10:31:11

标签: javascript jquery jquery-plugins responsivevoice

我试图让响应性语音读出每个句子,每个读数之间必须有1分钟的差距。

                function read(){

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


            var a = [1,2,3];

            $(a).each( function(){ 

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

            });

目前它只播放一次而在另外两个循环中出现错误

未捕获(在promise中)DOMException:play()请求被pause()调用中断。

我也无法让它读取任何动态传递给它的东西

2 个答案:

答案 0 :(得分:0)

也许问题是您使用.each()方法不正确,因为$(a)尝试定位选择器而不是数组。

来自jQuery.each() doc

jQuery.each(array,callback) where

array :Type:Array - 要迭代的数组。

回调:类型:Function(Integer indexInArray,Object value) - 将在每个对象上执行的函数。

所以,试试这个:

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

希望这对你有所帮助。

答案 1 :(得分:0)

好的,谷歌搜索后我找到了这个答案

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秒,因为我想在每一行添加一些暂停。