Как я могу сделать следующие функции IE 11 совместимыми, используя await / async? - PullRequest
0 голосов
/ 01 марта 2019

Код работает в Google Chrome, Microsoft Edge, но не работает в IE 11. IE 11 не понимает «асинхронную функцию».Мне нужна помощь в переводе асинхронной функции (в основном, блока кода ниже) в то, что IE 11 понял бы.

Я смог решить некоторые проблемы, которые у меня были с sweetalert2, но эти три немного сложны для меня.

Сценарий, написанный выше, - это то, с чем мне приходится работать.Как вы думаете, мне нужны другие библиотеки?

Для большей ясности я просто помещаю этот код в HTML-файл и запускаю его напрямую, не используя никаких дополнительных библиотек, кроме вышеупомянутых.

sweetalert2 - как мне сделать образцы кода совместимыми с IE11?

<script src="https://cdn.jsdelivr.net/npm/sweetalert2@8"></script>
    <!-- Optional: include a polyfill for ES6 Promises for IE11 and Android browser -->
    <script src="https://cdn.jsdelivr.net/npm/promise-polyfill@8/dist/polyfill.js"></script>

------------------------------------------------------------------------

const {value: password} = await Swal.fire({
  title: 'Enter your password',
  input: 'password',
  inputPlaceholder: 'Enter your password',
  inputAttributes: {
    maxlength: 10,
    autocapitalize: 'off',
    autocorrect: 'off'
  }
})

if (password) {
  Swal.fire('Entered password: ' + password)
}

-----------------------------------------------------------------------

const {value: file} = await Swal.fire({
  title: 'Select image',
  input: 'file',
  inputAttributes: {
    'accept': 'image/*',
    'aria-label': 'Upload your profile picture'
  }
})

if (file) {
  const reader = new FileReader
  reader.onload = (e) => {
    Swal.fire({
      title: 'Your uploaded picture',
      imageUrl: e.target.result,
      imageAlt: 'The uploaded picture'
    })
  }
  reader.readAsDataURL(file)
}
----------------------------------------------------------------------------

const {value: file} = await Swal.fire({
  title: 'Select image',
  input: 'file',
  inputAttributes: {
    'accept': 'image/*',
    'aria-label': 'Upload your profile picture'
  }
})

if (file) {
  const reader = new FileReader
  reader.onload = (e) => {
    Swal.fire({
      title: 'Your uploaded picture',
      imageUrl: e.target.result,
      imageAlt: 'The uploaded picture'
    })
  }
  reader.readAsDataURL(file)
}
---------------------------------------------------------------------------

1 Ответ

0 голосов
/ 01 марта 2019

Вам нужно две вещи:

  • Поскольку Swal.fire возвращает Обещание, если вы просто используете .then вместо await, вы сможете использовать Обещание слюбые дополнительные сложности
  • IE11 не поддерживает функции стрелок или деструктурирование - вы можете быстро перенести подобный код автоматически с помощью Babel

Например, для первого блока:

Swal.fire({
  title: 'Enter your password',
  input: 'password',
  inputPlaceholder: 'Enter your password',
  inputAttributes: {
    maxlength: 10,
    autocapitalize: 'off',
    autocorrect: 'off'
  }
}).then(function(obj) {
  var password = obj.value;
  if (password) {
    Swal.fire('Entered password: ' + password)
  }
});

Вы можете следовать той же схеме для других блоков кода.Просто замените функции стрелок на стандартные функции.

...