历史记录:我想为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响应。
这是不正确的。没有一个神奇的单一版本可以同时做到这两个。
相反,有两个不同的版本:
navigator.getUserMedia
(constraints, successCallback, errorCallback)
(已弃用!(navigator.mediaDevices.getUserMedia
(constraints)
只有这一个返回承诺
现在每个人都应该使用后者,因为前者没有在Safari和Firefox中实现。
所以你绑定了错误的函数。尝试:
const gUM = navigator.mediaDevices.getUserMedia.bind(navigator.mediaDevices);