1

我正在使用 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 进行猴子修补。这可能是原因,还是我做错了什么?有没有办法使用原生 Promise?

4

1 回答 1

0

问题是,chrome-remote-interface 无法评估使用 zone.js 时替换本机 Promise 的 ZoneAwarePromise。zone.js 将原始的原生 Promise 存储在 window.__zone_symbol__Promise 中。

使用Runtime.evaluate({window.__zone_symbol__Promise.resolve(expression), awaitPromise: true, returnByValue: true});为我修复它。不过,这实际上只是一种解决方法,具体取决于 zone.js 实现细节,因此不应在生产代码中使用。

于 2018-02-10T21:35:46.270 回答