gpt4 book ai didi

javascript - JS浏览器: check if error generated by getUserMedia() is a DOMException error object

转载 作者:行者123 更新时间:2023-12-03 08:41:08 24 4
gpt4 key购买 nike

我想知道是否由于getUserMedia()函数或webRTC函数而产生了以下promise链中的错误。
Firefox documentation说:通过将DOMException错误对象传递给Promise的失败处理程序,可以拒绝返回的Promise。那么,如何知道我得到的错误对象在chrome和firefox中是否都是DOMException错误对象?

function handleVideoOfferMsg(msg) {
var localStream = null;

targetUsername = msg.name;
createPeerConnection();

var desc = new RTCSessionDescription(msg.sdp);

myPeerConnection.setRemoteDescription(desc).then(function () {
return navigator.mediaDevices.getUserMedia(mediaConstraints);
})
.then(function(stream) {
localStream = stream;
document.getElementById("local_video").srcObject = localStream;

localStream.getTracks().forEach(track => myPeerConnection.addTrack(track, localStream));
})
.then(function() {
return myPeerConnection.createAnswer();
})
.then(function(answer) {
return myPeerConnection.setLocalDescription(answer);
})
.then(function() {
var msg = {
name: myUsername,
target: targetUsername,
type: "video-answer",
sdp: myPeerConnection.localDescription
};

sendToServer(msg);
})
.catch(function(e){
//know if error is generated by getUserMedia()
});
}

最佳答案

正确的方法不是查看错误对象,而是在流中的正确点捕获错误。

例如,您可以拥有

.then(function(stream) { ...},
(err) => { gumErrored = true; throw(err) ; }
)

这样,您仍然可以通过检查 gumErrored标志是否为true来确定最终错误(假设这就是您想要的),但可以确定错误的来源。

(您可以通过将 return myPeerConnection.createAnswer()放入同一块来跳过链中的一个 promise )

关于javascript - JS浏览器: check if error generated by getUserMedia() is a DOMException error object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61372024/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com