Мы разрабатываем инструмент для загрузки пользователями zip-пакетов на сайт внутренней сети в нашей компании.Мы используем jszip , чтобы проверить внутри zip-файлов и убедиться, что они соответствуют определенным правилам политики и формата.
Мы ищем определенные файлы внутри zip-файла, и может быть от 0 до 3 xmlфайлы, которые нас особенно интересуют. Затем мы хотим расширить эти файлы и проверить их содержимое после загрузки.
Я следовал этому предложению , как это сделать:
var zip = JSZipObject...
var promises = [];
var fileList = [file0,file1...fileX];
fileList.forEach(function(file){
promises.push(zip.file(file.name).async('string'));
});
return Promise.all(promises);
И это прекрасно работает в Chrome, но в IE нет встроенной поддержки Promise .
К сожалению, большая часть нашей компании все еще использует IE11, поэтому мне нужноПридумайте решение, которое будет работать как в Chrome, так и в IE11.
Я знаком с версиями обещаний в jQuery и использовал аналогичный прием для ожидания решения всех проблем.
return $.when.apply(null,[promises]);
Но, похоже, это не сработает, потому что обещания, возвращаемые zip.file().async()
, не являются обещаниями jQuery.
Есть ли способ, которым я могу обернуть обещания JSZip в jQuery или что-то другое?И как мне с этим справиться?