Есть ли способ дождаться, пока все System.register
(перенесенные из ES6) будут разрешены и загружены?
Это особенно полезно для e2e-тестирования в Angular и других мелочей.
Есть ли способ дождаться, пока все System.register
(перенесенные из ES6) будут разрешены и загружены?
Это особенно полезно для e2e-тестирования в Angular и других мелочей.
System.import
модуль, который вы хотите дождаться, который возвращает обещание.
System.import("myModule").then(function() {
// here it is loaded.
});
На практике вы, вероятно, захотите использовать что-то вроде systemjs-builder с логикой связывания, специфичной для маршрута, а не загружать вещи с помощью системы при загрузке первой страницы, чтобы на сервер совершалось меньше обращений туда и обратно.
Проблема с System.import().then
заключается в том, что зависимости второго уровня не будут разрешены.
System.register
имеет «обратный вызов», который выполняется, когда все его зависимости (и зависимости его зависимостей и т. д.) разрешены.
При переносе из ES6 этот «обратный вызов» в основном создается из остального кода в файле — весь код ожидает операторов import
. Поэтому мне не нужно ничего делать с SystemJS, чтобы получить обратный вызов для запуска тестов; теперь проблема в том, как заставить тестирование, т.е. транспортир, запускаться вручную. В настоящее время обходным путем является задержка тестирования на фиксированные ~ 30 секунд.