2016-10-26 27 views
0

即时尝试使响应式语音读出每个句子,并且每个读数之间必须有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 - 阵列遍历。

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

所以,试试这个:

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

希望这有助于你。

+0

即时通讯仍然收到错误:未捕获(承诺)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秒,因为我想添加一些暂停每一行。