1

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

                function read(){

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


            var a = [1,2,3];

            $(a).each( function(){ 

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

            });

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

Uncaught (in promise) DOMException: play() 请求被对 pause() 的调用中断。

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

4

2 回答 2

0

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

来自jQuery.each() 文档

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

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

callback : Type: Function( Integer indexInArray, Object value ) - 将在每个对象上执行的函数。

所以,试试这个:

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

希望这对您有所帮助。

于 2016-10-26T10:51:47.810 回答
0

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

$.each() 中的 setTimeout

基本上,您需要增加计时器。

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

于 2017-08-03T08:38:11.737 回答