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

标签 javascript browser error-handling getusermedia

我想知道是否由于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/

相关文章:

javascript - 单击“赞”按钮后确认链接出现

javascript - 如何使用 jquery 或 javascript 从对象内部将当前对象作为 JSON 字符串返回?

error-handling - VisualForce错误: Id value is not valid for the Contact standard controller

c# - 错误处理代码性能

windows - 从浏览器在客户端运行命令

c# - 自定义错误页面未在 IIS7 ASP.NET 上显示

javascript - 我真的很喜欢允许 "isACar?"方法名称的 ruby​​ 方式,但是如何在 js 中做到这一点?

javascript - 从 helper Class. 返回值没有返回到 index.js

css - 在 Chrome 和 Safari 中 img 后奇怪的中断,但在 Firefox 中正常

caching - 来自 ServiceWorker 的获取调用是否使用常规浏览器缓存