SystemJS готов?

Есть ли способ дождаться, пока все System.register (перенесенные из ES6) будут разрешены и загружены?

Это особенно полезно для e2e-тестирования в Angular и других мелочей.


person user    schedule 31.12.2015    source источник


Ответы (2)


System.import модуль, который вы хотите дождаться, который возвращает обещание.

System.import("myModule").then(function() {
   // here it is loaded.
});

На практике вы, вероятно, захотите использовать что-то вроде systemjs-builder с логикой связывания, специфичной для маршрута, а не загружать вещи с помощью системы при загрузке первой страницы, чтобы на сервер совершалось меньше обращений туда и обратно.

person Benjamin Gruenbaum    schedule 31.12.2015

Проблема с System.import().then заключается в том, что зависимости второго уровня не будут разрешены.

System.register имеет «обратный вызов», который выполняется, когда все его зависимости (и зависимости его зависимостей и т. д.) разрешены.

При переносе из ES6 этот «обратный вызов» в основном создается из остального кода в файле — весь код ожидает операторов import. Поэтому мне не нужно ничего делать с SystemJS, чтобы получить обратный вызов для запуска тестов; теперь проблема в том, как заставить тестирование, т.е. транспортир, запускаться вручную. В настоящее время обходным путем является задержка тестирования на фиксированные ~ 30 секунд.

person user    schedule 31.12.2015