我正在使用语音合成API来发音不同单词的列表。我的应用程序通过 Canvas 说出的单词前后都带有动画效果。我意识到,当我执行新的发音时:
var msg = new SpeechSynthesisUtterance(word);
window.speechSynthesis.speak(msg);
语音单词似乎阻塞了主线程,从而暂时停止了动画。每当我调用
window.speechSynthesis.speak();
时,都会发生这种情况。有没有一种方法可以使语音合成在Javascript的单独线程上运行,从而不会干扰我在主线程上的动画?
(我主要是在Chrome中对此进行测试)
最佳答案
我将使用setTimeout伪造一个异步调用:
var msg = new SpeechSynthesisUtterance(word);
setTimeout(function() { window.speechSynthesis.speak(msg); }, 1);
我必须承认我对此不确定。