puppeteer-sharp - EvaluateExpressionAsync<> 超时?
问题描述
我正在使用 Puppeteer sharp 来呈现报告,其中一部分是执行用户提供的 javascript 来为报告准备数据。
我使用 AddScriptTagAsync 将脚本添加到页面,然后在呈现报告之前调用用户提供的脚本。
如果用户提供的 javascript 存在导致无限循环的问题(例如),那么我的调用EvaluateExpressionAsync
可能会永远等待:
await page.EvaluateExpressionAsync<dynamic>($"Prepare({DataObject});")
我无法将取消令牌传递给,EvaluateExpressionAsync
因此我无法控制它,并且此方法似乎没有可用的超时。
我想将它限制在可控的秒数内,然后让它超时。
任何有关如何做到这一点的建议将不胜感激。
解决方案
您将使用WaitForExpressionAsync。
这种方法的想法是在一段时间内执行表达式,直到结果为真。但是,如果您确保您的表达式将始终返回一个真实值,WaitForExpressionAsync 将使用您作为选项传递的超时超时。
推荐阅读
- java - android.widget.Toolbar 和 android.support.v7.widget.Toolbar 有什么区别?
- python - 如何按值正确地将对象传递给函数
- joomla - 有什么方法可以手动将 Joomla 中的新注册用户发送到 Mautic?
- javascript - 如何使用 JavaScript append 插入带有样式属性的选项值?
- mysql - 有没有办法通过更改连接点来运行带有 MySql 数据库的 DNN 9?
- java - 从我的所有控制器访问一个变量
- c++ - 采用 Eigen::Tensor 的函数 - 模板参数推导失败
- python - Insert SQLalchemy from dictionary
- algorithm - 计算 3D 固定关节约束中两个实体的冲量/扭矩
- linux - 如何使用由无人用户启动的 JProfiler for JVM 远程配置文件?