chrome.desktopCapture.chooseDesktopMedia回调总是返回undefined

时间:2014-04-28 05:47:07

标签: google-chrome-extension

有人知道为什么我的代码总是在回调中返回 undefined 变量。从api文档中可以看出它在chrome 34中是稳定的,我已经将我的chrome更新为chrome 34但仍然得到了未定义的值。

chrome.desktopCapture.chooseDesktopMedia(
  ["screen", "window"],
  function (streamId) {
      console.log(streamId); //always returns undefined.
  });

顺便说一句,我使用的是Ubuntu 32位,带有chrome版本34.0.1847.132

1 个答案:

答案 0 :(得分:0)

Chrome总是会触发回调,即使它有异常也是如此。您必须检查chrome.runtime.lastError

chrome.desktopCapture.chooseDesktopMedia(
  ["screen", "window"],
  streamId => {
      if(chrome.runtime.lastError)
          console.error(chrome.runtime.lastError);
      else
          console.log(streamId);
  });

或者,您可以使用异步/ Promise包装器库,如chrome-extension-async,以便您可以捕获await异常:

try {
    streamId = await chrome.desktopCapture.chooseDesktopMedia(["screen", "window"]);
    console.log(streamId);
}
catch(err) { 
    console.error(err);
}