В течение достаточно долгого времени я был в состоянии успешно использовать синтаксис async / await с трансплантацией Babel и платформой AngularJS (1.x).Распространенная проблема заключается в том, что async / await использует собственные Promises, а не $q
angular, поэтому асинхронная работа выполняется за пределами цикла дайджеста.
Я взломал это, выполнив следующее:
angular.module('app', []).run(($window, $q) => {
$window.Promise = $q;
});
Я знаю, что это опасно по множеству причин, но работает как брелок без каких-либо оберток, таких как $async
библиотека, которая не является решением для вставки (и я хочу решение для вставки).
В любом случае, он прекрасно работает, пока я не перенесу исходный код, который генерирует JS, который вызывает фактические конструкторы Promise
и т. Д. Но это кошмар для отладки, поскольку даже с исходными картами отладчик Chrome часто теряется.Но Chrome уже некоторое время поддерживает async / await, и отладка этих операторов работает отлично.Но когда я редактирую свою конфигурацию babel, чтобы не передавать async / awaits, мой window.Promise
перестает работать, потому что V8 должен использовать свой внутренний конструктор Promise при выполнении этих операторов async / await.
Вопрос в том, есть ли способвзломать его, чтобы он работал с моими текущими настройками?Я хочу покопаться в V8, скомпилировать свой собственный хром и т. Д. Потому что, в конце концов, я все равно буду транслировать асинхронные / ожидающие при создании производственных сборок - мне просто нужно, чтобы он работал в локальной среде для отладки.
Есть идеи?