Pull to refresh

Comments 9

Иными словами вы просто создали свою собственную реализацию стэка вызовов? И для чего?
После стартового «по средствам» был вознаграждён «промайсами». Даже если дальше написано что-то гениальное, я об этом не узнаю
Это из одной категории с «раби» © знатоки англо-саксонской мовы :)
И вот еще, вот про это слышали? caolan.github.io/async решает множество проблем как с читаемостью кода, пониманием, лапшой и т. д. позволяя запускать синхронные и асинхронные задачи в любых мыслимых комбинациях.
В последних стандартах, появились свои промайсы, а потом и async/await, что вкупе позволяет свести вычислительный процесс к полностью синхронной модели. И казалось бы, что проблема решена, но у меня есть ряд претензий к данному решению:

  • реализация далека от «элегантности»
  • на данный момент медленно работает
  • плодит плохо читаемый код
  • плохо подходит для организации «массивной» параллельности (без кучи плохо читаемого кода)


Можете хоть один пункт аргументировать? Или тег «юмор» добавьте.

Вы не поверите, но при трансляции генераторов и асинхронных функций Babel генерирует примерно такой же код, как и у вас в статье:


regeneratorRuntime.wrap(function _callee$(_context) {
  while (1) {
    switch (_context.prev = _context.next) {
      case 0:
        _context.next = 2;
        return fetch();

      case 2:
        result = _context.sent;
        _context.next = 5;
        return result.json();

      case 5:
        data = _context.sent;
        return _context.abrupt("return", data);

      case 7:
      case "end":
        return _context.stop();
    }
  }
}, _callee, this);

Очень странно, что набор switch/case, которые исполняются в неопределенном порядке, кажется вам более читаемым, чем исходник с async/await.

Давайте забудем про async/await
Что то вроде функции, только асинхронной

А давайте не будем забывать про нативную фичу языка, которую сделали для работы с асинронностью и которая именно что реализует "функции, только асинхронные"?

Sign up to leave a comment.

Articles