importScripts returns 在网络工作者中未定义

importScripts returns undefined in the web workers

对于较早的浏览器版本,Web Worker 中未定义 Promise。因此,如果 Promise 未定义,我将通过 importScripts('Promise.js') 使用 polyfill Promise。但是我仍然在 return.

中得到一个未定义的对象
var promise;
if(typeof Promise === undefined) {
  self.importScripts('./Promise.js').Promise;
}

promise = new Promise(function (resolve, reject) {
  var url = ajaxArgs.url || '',
      data = ajaxArgs.data || {},
      type = ajaxArgs.method || 'GET',
      isGet = type === 'GET',
      request = new XMLHttpRequest();
      ........
}

我怎样才能让 Web Worker 工作?

importScripts function 没有 return 任何东西。当您在调用中访问 .Promise 属性 时,这将抛出,您的代码将停止执​​行。顺便说一句,typeof 从来没有 return undefined,所以你很幸运,它从未被执行过。

if (typeof Promise !== "function") self.importScripts('./Promise.js');

var promise = new Promise(function (resolve, reject) {
    …
});