JS Async и await для работы в internet explorer
Я уже получил свой проект для работы с async / await в каждом другом браузере, но, по-видимому, он не совместим с IE.
(async function () {
  try {
    await getLayers();
  }
  catch (err) {
    console.error(err)
  }
}());
который вызывает мою другую функцию:
async function getLayers() {  
try {
  $.when(
    await $.getJSON('http://' + ipAddress + '/api/Barriers/barrierGeoJSON', function (data) {
        createLayer(data[0].row_to_json, 'Barrier');
      }),
     await $.getJSON('http://' + ipAddress + '/api/DistPoints/distPointGeoJSON', function (data) {
        createLayer(data[0].row_to_json, 'Disturbance Points');
      })
  )}
  catch (err) {
    console.error(err);
  }
};
Мне нужна помощь в запуске этого кода в IE. Есть ли какой-то полифилл или транспилер, который я должен использовать? Я бы не хотел переписывать все, когда оно уже работает гладко. Это в настоящее время работает клиентская сторона, и я не мог понять, как использовать async--await. Спасибо, ребята, заранее.
1 ответов
Я закончил с помощью Бабель преобразовать эту часть моего кода для работы с IE11. Также мне пришлось импортировать polyfill, чтобы функция regeneratorRuntime работала.
это стало тем, что работает во всех браузерах:
_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
  return regeneratorRuntime.wrap(function _callee$(_context) {
    while (1) {
      switch (_context.prev = _context.next) {
        case 0:
          _context.prev = 0;
          _context.next = 3;
          return getLayers();
        case 3:
          _context.next = 8;
          break;
        case 5:
          _context.prev = 5;
          _context.t0 = _context['catch'](0);
          console.error(_context.t0);
        case 8:
        case 'end':
          return _context.stop();
      }
    }
  }, _callee, this, [[0, 5]]);
}))();
'use strict';
var getLayers = function () {
  var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
    return regeneratorRuntime.wrap(function _callee$(_context) {
      while (1) {
        switch (_context.prev = _context.next) {
          case 0:
            _context.prev = 0;
            _context.t0 = $;
            _context.next = 4;
            return $.getJSON('http://' + ipAddress + '/api/Barriers/barrierGeoJSON', function (data) {
              createLayer(data[0].row_to_json, 'Barrier');
            });
          case 4:
            _context.t1 = _context.sent;
            _context.next = 7;
            return $.getJSON('http://' + ipAddress + '/api/DistPoints/distPointGeoJSON', function (data) {
              createLayer(data[0].row_to_json, 'Disturbance Points');
            });
          case 7:
            _context.t2 = _context.sent;
            _context.t0.when.call(_context.t0, _context.t1, _context.t2);
            _context.next = 14;
            break;
          case 11:
            _context.prev = 11;
            _context.t3 = _context['catch'](0);
            console.error(_context.t3);
          case 14:
          case 'end':
            return _context.stop();
        }
      }
    }, _callee, this, [[0, 11]]);
  }));
  return function getLayers() {
    return _ref.apply(this, arguments);
  };
}();
function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; }
;