EvaluateExpressionAsync<> 超时?

Timeout with EvaluateExpressionAsync<>?

我正在使用 Puppeteer sharp 来呈现报告,其中一部分是执行用户提供的 javascript 来为报告准备数据。

我使用 AddScriptTagAsync 将脚本添加到页面,然后在呈现报告之前调用用户提供的脚本。

如果用户提供的 javascript 存在导致无限循环的问题(例如),那么我对 EvaluateExpressionAsync 的调用可能会永远等待:

await page.EvaluateExpressionAsync<dynamic>($"Prepare({DataObject});")

我无法将取消令牌传递给 EvaluateExpressionAsync,所以我无法控制它,而且此方法似乎没有可用的超时。

我想把它限制在一个可控的秒数,然后让它超时。

如有任何建议,我们将不胜感激。

你会使用 WaitForExpressionAsync.
该方法的思想是在一段时间内执行表达式,直到结果为真。 但是,如果您确保您的表达式始终 return 为真值,WaitForExpressionAsync 将使用您作为选项传递的超时来超时。