voiceSynthesis.getVoices() 在 Windows 上返回空数组 [重复]

2024-03-03

我正在做一个Chrome 扩展程序,其中我正在使用语音合成。当我打字时speechSynthesis.getVoices() in the console我得到一个21种不同声音的阵列。伟大的!

When I console.log()在我的 javascript 代码中的同一行,我得到一个空数组在控制台中。这是怎么回事,我想不通!


正如 @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...

在这里,在每个时间间隔之后,我们检查是否voices返回的数组getVoices()是否为空。如果不是,我们最终会兑现承诺......

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

voiceSynthesis.getVoices() 在 Windows 上返回空数组 [重复] 的相关文章

  • 同时节点以状态 1 退出。这会停止 Teamcity,导致其认为测试失败

    我正在尝试同时运行两个脚本concurrently 基本命令如下所示 concurrently k success first node tools mock webapi mock webapi js npm run test singl
  • JavaScript 等待函数响应

    我有以下代码 myFunc bar myFunc 正在发出 ajax 请求 在 myFunc 的请求完成之前 我不想执行 bar 我也不想将对 bar 的调用移至 myFunc 内部 可能的 EDIT 这是我最终得到的代码 var FOO
  • 在原始文件之后插入克隆文件

    我试图在原始元素之后放置一个克隆元素 我做了一些研究 发现了如何创建克隆以及如何将克隆放置在原始副本之后 但我似乎无法将它们放在一起 这是我的代码
  • 查找数组中的重叠数据

    我们正在编写一个 C 应用程序 它将有助于删除不必要的数据重复器 只有在以下情况下才可以移除中继器 all它接收到的数据被其他中继器接收 我们第一步需要做的事情解释如下 例如 我有 int 数组的集合 A 1 2 3 4 5 b 2 4 6
  • 如何在使用“document.createElement()”方法创建单元格后立即在 JavaScript 中设置单元格宽度?

    我已经使用 document createElement td 方法在 html 页面中为动态表格创建了单元格 现在希望用一些不同的值设置每个单元格的宽度 尝试过 cell width width 但它不起作用 我怎样才能实现它 Use s
  • 如何调试requireJS模块定义的路径/文件

    我是 RequireJS 世界的新手 我越来越Load Timeout error对于我已经在主文件中定义的模块之一 我在 Chrome 的 网络 选项卡中没有看到任何请求 可能是因为 require 之前已经加载了该文件 我已经迷上了on
  • 在TestCafé测试中注入的injectScripts中的脚本在哪里?

    我正在以编程方式设置 TestCaf 测试 并且使用injectScripts配置上Runner类来注入函数 根据文档 这些脚本被添加到测试页面的标题中 是否可以从测试本身调用函数 我还没有找到办法做到这一点 我可以看到脚本映射在测试中是可
  • Python:并行修改数组的简单方法

    这个问题可能听起来很简单 但作为 Python 并行化的新手 我肯定会遇到困难 我处理了 OpenMP for C 中的并行化问题 这要容易得多 我需要做的是并行修改矩阵的条目 就是这样 问题是 我无法使用简单的 joblib 库来做到这一
  • Visual C++ free 和 malloc 的线程安全性?

    有谁知道 free 和 malloc 在 Visual C 2010 上是否是线程安全的 我遇到了奇怪的问题 内存被损坏 我几乎认为这是唯一的可能性 有谁知道安全装置是否可以打开和关闭以及如何打开和关闭 前提是您链接的是线程安全库 http
  • 在 Javascript 中缓存和预取过期的 Promise

    Promise 是我在 Javascript 中管理异步代码的首选方式 Memoize npm 上的 memoizee 是一个 Javascript 库 用于轻松缓存和预取函数结果 理想情况下 我想结合两者的优点 并且能够使 Promise
  • 从 onclick 属性调用 e.stopImmediatePropagation()

    如何从事件对象中获取事件对象onclick属性 我努力了 a href something html Click me a 另外 我也尝试过这个 a href something html Click me a 但控制台只显示 a 元素 我
  • 如何在javascript中解压二进制文件?

    我正在尝试将一些现有代码从 python 移植到 javascript 并且不确定如何处理以下行 var1 var2 struct unpack
  • 注册表碎片整理程序[重复]

    这个问题在这里已经有答案了 这是出于好奇 但我见过几个 其中一些非常流行 称为注册表碎片整理程序的软件 虽然我可以看到它们提供的好处 但我很好奇您到底是如何进行注册表碎片整理的 请注意 我并不是要求提供软件名称 只是询问其如何以编程方式完成
  • preg_match_all JS 等效吗?

    Javascript 中是否有与 PHP 的 preg match all 等效的函数 如果没有 将正则表达式的所有匹配项放入数组的最佳方法是什么 我愿意使用任何 JS 库来让它变得更容易 您可以使用match使用全局修饰符 gt gt g
  • ES6 标记的​​模板函数如何解释它们的参数顺序?

    考虑以下代码 function f console log Array from arguments var x 2 var y 3 f before x y after 论据f将会 根据 Traceur http google githu
  • 找不到模块“babel-runtime/regenerator”本地导入与从 NPM 导入

    我正在开发一个 NPM 模块 但我的 babel 配置一直存在问题 我正在使用 ES6 特别是异步 等待 静态类方法和导入 导出 首先 我遇到了一个常见问题 ReferenceError regeneratorRuntime is not
  • 删除数组中的重复元素[重复]

    这个问题在这里已经有答案了 可能的重复 在 JavaScript 数组中查找重复值的最简单方法 https stackoverflow com questions 840781 easiest way to find duplicate v
  • 为什么直接访问对象文字上的属性会引发语法错误?

    当尝试访问该属性时a物体的 a 我收到错误 SyntaxError Unexpected token 有了括号一切都很好 a 为什么我首先会收到错误 有歧义吗 花括号被解释为块语句 http es5 github com x12 html
  • Mongoose - 遍历对象

    在 node js 上使用 mongoose 我试图找到玩家 game players id 等于我传递的 id 的所有游戏 Schema var Game mongoose Schema id String date type Date
  • 高图表的分散工具提示未显示

    我有一个散点图和条形图 我无法查看酒吧上方散点的工具提示 这是小提琴http jsfiddle net tZ9Rt http jsfiddle net tZ9Rt 我正在使用这两个系列 series type scatter index 2

随机推荐

  • 将 UITableView 添加到现有 ViewController

    我正在尝试添加一个UITableView到现有的UIViewController以编程方式 My run h文件有这个 interface runTests UIViewController
  • 将 process.env.NODE_ENV 与 String 进行比较

    为什么当我比较这两个时我得到false const production process env NODE ENV production 即使当我设置process env NODE ENV到生产我仍然得到false value Why E
  • 获取python项目使用的所有模块/包

    我有一个 python GUI 应用程序 现在我需要知道应用程序链接到的所有库 这样我就可以检查所有库的许可证兼容性 我尝试过使用 strace 但 strace 似乎会报告所有包 即使应用程序未使用它们 而且 我尝试了 python Mo
  • 如何更改 mysql 表列默认值?

    我有一个带有 type 列的表timestamp默认值current timestamp并更新至current timestamp每次更新时 我想删除此列上的 更新时 功能 怎样写alter语句呢 我尝试了以下方法 ALTER TABLE
  • 模块在角度模块中没有导出成员错误

    我想创建一个功能模块来处理上传的前端 上传组件 html没有错误
  • 从 Eclipse 插件使用 Jython

    当从 Eclipse 插件运行时 我很难让 jython 正常工作 我有一个简单的对象工厂 它加载符合 Java 接口的 python 模块 所有这些在独立模式下都可以正常工作 然而 当我将其打包为 Eclipse 插件时 我根据一些变量收
  • gnu sort - 默认缓冲区大小

    我已阅读全文文档 http www gnu org software coreutils manual html node sort invocation html sort invocation对于 gnu sort 并在线搜索 但我找不
  • JS 将 blob url 转换为 Base64 文件

    有如下代码 console log blob var reader new window FileReader reader onloadend function console log reader result reader readA
  • 如何在 Flutter 中点击其他小部件时打开 DropdownButton?

    我需要有一个DropdownButton当点击其他一些小部件时 选项列表会以编程方式打开 显示 我知道这可能不是 UI 最佳实践 但我需要这种行为 举个例子 在像下面这样的结构中 我可能需要用胶带固定Text every 来打开邻近的Dro
  • 在 php 下拉列表中设置默认选项并在提交查询时保留

    我有下面的代码 它从 php ini 创建下拉菜单 我想在这里实现两件事 1 我想将其中一个选项设置为默认 它可以是硬编码的或从查询中选择的 2 当按下按钮时 应保留所选选项 我可以使用会话数据检索所选选项 echo print versi
  • PostgreSQL 10 => 11.1 关于 Brew 更新问题

    试图找到一条迁移路线PostgreSQL 10 6 to postgreSQL 11 1 Using pg upgrade 从两个版本 给我错误 从11 1我认为这将用于将过时的表格转换为货币 usr local Cellar postgr
  • 检查 ipython 中最后一个命令的退出状态

    有谁知道如何在 ipython 中检查最后执行的命令 退出代码 的状态 它应该存储为 exit code运行命令后 至少在即将发布的 v0 11 版本中
  • 实现基于查表的三角函数

    对于我在业余时间实现的视频游戏 我尝试使用查找表实现我自己的 sinf cosf 和 atan2f 版本 目的是使实现速度更快 但准确性较低 我的初步实现如下 这些函数可以工作 并返回良好的近似值 唯一的问题是他们是slower而不是调用标
  • python中获取shell命令的返回值

    我正在做os system追踪实时文件并grep对于一个字符串 grep 成功后如何执行某些操作 例如 cmd os system tail f file log grep i abc if cmd Do something and con
  • 检查表达式是否有效

    由于未捕获的异常而终止应用程序 NSInvalidArgumentException 原因 无法解析格式 字符串 12 6 1 我想验证表达式是否有效 我正在尝试使用以下代码 let equationString 12 6 do let e
  • 添加到别人对我不拥有的 GitHub 项目的拉取请求

    我可以添加提交吗别人的在我不是所有者的存储库上拉取请求 e g 用户 A 拥有项目 X 用户 B 分叉项目 X 创建功能分支 进行一些更改 然后提交拉取请求 用户 C 喜欢该拉取请求 但希望对其进行一些修改 FWIW 用户 C 已经拥有项目
  • jquery `append()` 是否删除重复的对象?

    我正在使用 jQuery 对表进行排序 大致遵循找到的代码here https stackoverflow com questions 10543618 jquery sort a table after adding a row to i
  • 如何使用 Prettier 在 vscode 上无法自动多行?

    我喜欢 Prettier 中的所有功能 但自动多行功能很烦人 是否可以将其关闭 就像添加多个 CSS 选择器和 HTML 属性时一样 我希望将它们保留在一行中 而不是将每个选择器 属性放在自己的行上 例如 在 CSS 上我希望它看起来像这样
  • 从单个文件反序列化多个对象[重复]

    这个问题在这里已经有答案了 我有许多对象 同一类 序列化到一个文件中 但是在反序列化它时 只有第一个序列化的对象被反序列化 序列化代码 public void save File f new File vehicule txt try if
  • voiceSynthesis.getVoices() 在 Windows 上返回空数组 [重复]

    这个问题在这里已经有答案了 我正在做一个Chrome 扩展程序 其中我正在使用语音合成 当我打字时speechSynthesis getVoices in the console我得到一个21种不同声音的阵列 伟大的 When I cons