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) {
…
});