getUserMedia.bind(navigator) 不返回承诺



历史记录:我想为navigator.getUserMedia创建一个别名/命名空间。在这个过程中,我做了以下操作:

let constraints = {}; // Required for setting device constraints
let _getUserMedia = navigator.getUserMedia.bind(navigator);
// It is necessary to bind to the navigator if one makes an alias out of it.
_getUserMedia(constraints).then(res => console.log(res)).catch(err => console.log(err));

我得到以下错误:未捕获类型错误:未能在"Navigator"上执行"getUserMedia":需要3个参数,但只存在1个

正如我们从文档中了解到的那样,getUserMedia接受成功和失败的回调,如果有人没有通过它们,则会返回promise响应。为什么这没有回报任何承诺?

对于这种怪异行为的解释,我们将不胜感激。

我已经做了很多。只需使用

let _getUserMedia = navigator.MediaDevices.getUserMedia

并且忘记CCD_ 1操作。没有必要。

正如我们从文档中了解到的,getUserMedia接受成功和失败的回调,如果有人没有通过,则返回promise响应。

这是不正确的。没有一个神奇的单一版本可以同时做到这两个。

相反,有两个不同的版本:

  1. navigator.getUserMedia(constraints, successCallback, errorCallback)(已弃用!(
  2. navigator.mediaDevices.getUserMedia(constraints)只有这一个返回承诺

现在每个人都应该使用后者,因为前者没有在Safari和Firefox中实现。

所以你绑定了错误的函数。尝试:

const gUM = navigator.mediaDevices.getUserMedia.bind(navigator.mediaDevices);

相关内容

  • 没有找到相关文章

最新更新