我正在使用语音合成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);
我必须承认我对此不确定。

10-08 19:04