Как оценить обещание приложения Angular удаленно через chrome-remote-interface
Я использую пакет узла chrome-remote-interface для удаленного доступа к приложению Angular. Чтобы оценить выражение, которое возвращает Promise, я использую этот фрагмент кода:
Runtime.evaluate({expression, awaitPromise: true, returnByValue: true});
Я получаю следующее сообщение об ошибке:
Error: Result of the evaluation is not a promise
Мне известно, что zone.js исправляет Обещание с помощью ZoneAwarePromise. Может ли это быть причиной, или я делаю что-то не так? Есть ли способ использовать родной Promise?
1 ответ
Проблема состояла в том, что chrome-remote-interface не мог оценить ZoneAwarePromise, который заменяет родной Promise при использовании zone.js. zone.js хранит исходное обещание Promise в окне.__ zone_symbol__Promise.
С помощью Runtime.evaluate({window.__zone_symbol__Promise.resolve(expression), awaitPromise: true, returnByValue: true});
исправил это для меня. Это действительно просто обходной путь, который зависит от деталей реализации zone.js и поэтому не должен использоваться в производственном коде.