You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript如何等待摄像头权限授权完成后再执行后续代码?

根因分析

你写的ShowLocalVideo虽然标记了async关键字,但内部没有返回Twilio.Video.createLocalVideoTrack()生成的Promise实例,外层的await实际等待的是一个立即完成的空Promise,因此后续代码不会等待权限交互就直接执行了。

修复代码

只需在异步操作前加return,把Promise暴露给外层即可:

async function ShowLocalVideo() {   
    // 返回异步操作的Promise
    return Twilio.Video.createLocalVideoTrack().then(track => {
        const localMediaContainer = document.getElementById('LocalMedia');
        localMediaContainer.appendChild(track.attach());        
      });
}

修改后执行await ShowLocalVideo(),会自动等用户对摄像头权限请求做出允许/拒绝的选择后,再执行后面的alert逻辑。

可选异常兼容

如果需要处理用户拒绝权限、设备无可用摄像头的场景,可以搭配try/catch使用:

try {
  await ShowLocalVideo();
  alert('Hi !');
} catch (error) {
  console.error('摄像头访问失败:', error);
  // 此处可追加用户引导逻辑,比如提示需要开启摄像头权限才能使用功能
}

内容的提问来源于stack exchange,提问作者Thomas Carlton

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 06:36:04