【问题标题】:Responsive voice jquery plugin not working inside loop响应式语音 jquery 插件在循环内不起作用
【发布时间】:2016-10-26 10:31:11
【问题描述】:

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

                function read(){

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


            var a = [1,2,3];

            $(a).each( function(){ 

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

            });

目前它只播放一次,在其他两个循环中出现错误

未捕获(承诺中)DOMException:play() 请求被对 pause() 的调用中断。

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

【问题讨论】:

    标签: javascript jquery jquery-plugins responsivevoice


    【解决方案1】:

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

    来自jQuery.each() doc:

    jQuery.each(数组,回调)在哪里

    array:类型:Array - 要迭代的数组。

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

    那么,试试这个:

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

    希望对您有所帮助。

    【讨论】:

    • 我仍然收到错误:未捕获(承诺中)DOMException:播放()请求被暂停()调用中断。
    • 是的,我也有同样的问题。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多