Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Асинхронный вызов в синхронный (https://javascript.ru/forum/misc/69563-asinkhronnyjj-vyzov-v-sinkhronnyjj.html)

SergeyERjs 03.07.2017 17:38

И работоспособность в IE - одно из ключевых требований.

SergeyERjs 03.07.2017 17:46

Есть какой-нибудь полифил, чтобы вот это
async function main() {
  console.log('begin');
  await wait(2000);
  console.log('end');
}
без изменений заработало в IE?

EmperioAf 03.07.2017 17:47

SergeyERjs,
Рекомендую взять какой-нибудь готовый boilerplate, с gulp+babel+browserify. Ну или webpack изучить. Если конечно хочется такого синтаксиса. В IE8 даже промисов нет, поэтому если хотите писать на нативном es3, то пишите с использованием callback-ов.

SergeyERjs 03.07.2017 17:50

EmperioAf,
IE9+ достаточно.

Видимо придется рефакторить 90%, переделывать на промиси.
Всем спасибо.

Luca 03.07.2017 17:52

SergeyERjs,
в ие какой версии? начнем этого

SergeyERjs 03.07.2017 17:55

Цитата:

Сообщение от Luca (Сообщение 457407)
SergeyERjs,
в ие какой версии? начнем этого

IE9+

рони 03.07.2017 18:26

SergeyERjs,
первую строку можно убрать
<script src="http://stacksnippets.net/scripts/snippet-javascript-console.min.js?v=1"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-polyfill/6.23.0/polyfill.min.js"></script>
  <script>
'use strict';

var main = function () {
  var _ref = _asyncToGenerator(regeneratorRuntime.mark(function _callee() {
    return regeneratorRuntime.wrap(function _callee$(_context) {
      while (1) {
        switch (_context.prev = _context.next) {
          case 0:
            console.log('begin');
            _context.next = 3;
            return wait(2000);

          case 3:
            console.log('end');

          case 4:
          case 'end':
            return _context.stop();
        }
      }
    }, _callee, this);
  }));

  return function main() {
    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"); }); }; }

function wait(ms) {
  return new Promise(function (resolve) {
    return setTimeout(function () {
      console.log("then");resolve();
    }, ms);
  });
}

main().then(function () {
  return console.log('main is done');
});
  </script>


Часовой пояс GMT +3, время: 07:20.