首页 > 解决方案 > EvaluateExpressionAsync<> 超时?

问题描述

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

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

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

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

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

我想将它限制在可控的秒数内,然后让它超时。

任何有关如何做到这一点的建议将不胜感激。

标签: puppeteer-sharp

解决方案


您将使用WaitForExpressionAsync
这种方法的想法是在一段时间内执行表达式,直到结果为真。但是,如果您确保您的表达式将始终返回一个真实值,WaitForExpressionAsync 将使用您作为选项传递的超时超时。


推荐阅读