javascript – speechSynthesis.getVoices()在Windows上返回空数组
作者:互联网
我正在制作Chrome扩展程序,我正在使用语音合成.当我在控制台中键入speechSynthesis.getVoices()时,我得到一个包含21种不同声音的数组.大!
当我在我的javascript代码中的console.log()同一行时,我在控制台中得到一个空数组.怎么了,我想不出来!
解决方法:
正如@CertainPerformance在评论中指出的那样,当加载页面时,需要花费一些时间来异步填充语音数组.由于在页面加载后立即将数组登录到控制台,我们看到一个空数组……
要解决此问题,我们会在一段时间后(例如,10或50毫秒)进行控制台记录:
setTimeout(() => {
console.log(window.speechSynthesis.getVoices());
}, <time_in_ms>);
如果你想用Promises实现同样的目的,那么这里是代码:
function setSpeech() {
return new Promise(
function (resolve, reject) {
let synth = window.speechSynthesis;
let id;
id = setInterval(() => {
if (synth.getVoices().length !== 0) {
resolve(synth.getVoices());
clearInterval(id);
}
}, 10);
}
)
}
let s = setSpeech();
s.then((voices) => console.log(voices)); // Or any other actions you want to take...
在这里,在每个时间间隔之后,我们检查getVoices()返回的语音数组是否为空.如果不是,我们最终会解决这个承诺……
标签:javascript,arrays,windows,voice,speech-synthesis 来源: https://codeday.me/bug/20190710/1425813.html