importScripts возвращает неопределенное в веб-работников

Для более ранних версий браузеров Promise не определен для веб-работников. Поэтому я использую Promise с полизаполнением importScripts('Promise.js'), если Promise не определен. Но все же я получаю неопределенный объект взамен.

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();
      ........
}

Как я могу сделать эту работу для веб-работников?

1 ответ

Решение

importScripts функция ничего не возвращает. Когда вы получаете доступ к .Promise свойство на вызов, это бросит, и ваш код перестает выполняться. Btw, typeof никогда не вернется undefined, так что вам повезло, и это никогда не ожидалось.

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

var promise = new Promise(function (resolve, reject) {
    …
});
Другие вопросы по тегам