javascript - 我们如何在 phantomjs 中使用 evaluateAsync

标签 javascript phantomjs

evaluateAsync 的用法是什么,我们什么时候必须使用这个函数,使用这个函数有什么好处。 在下面我们看到一个可怜的documentation为此:

var webPage = require('webpage');
var page = webPage.create();
// @TODO: Finish page.evaluateJavaScript example.

任何主体都可以展示在 phantomjs 中使用 evaluateAsync 的示例

最佳答案

此函数允许您执行任何 JavaScript 代码,例如 evaluate API 函数。 但它会评估你的代码异步。这意味着:

  • 当前执行上下文不会被阻塞。
  • 它不会返回任何结果。

假设您要执行一些长时间运行的 JavaScript 代码,但对其结果不感兴趣。如果您将使用 evaluate,您当前的执行上下文将被阻止。

evaluateAsync 的文档有点错误。 evaluateAsync 的正确签名是: evaluateAsync(function, ms, args),其中:

  • function - 要评估的函数
  • ms - 执行前等待的时间
  • args - 函数参数

示例:

evaluateAsync(function() {
   console.log('Hi! I\'m evaluateAsync call!');
}, 1000);

在现实世界中使用:

  • 您想捕获一些异步事件。
  • 单元测试!据我所知,PhantomJS 运行器使用 evaluateAsync 运行单元测试。

关于javascript - 我们如何在 phantomjs 中使用 evaluateAsync,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22474525/

相关文章:

javascript - 如何使用angularjs动态添加行?

node.js - 页脚的内容似乎不起作用

python - 使用 Selenium/PhantomJS 进行网络捕获

php - 基于php header 的javascript切换获取值?

node.js - PhantomJS 错误

phantomjs - chromedriver 工作,但 "phantomjs unable to locate item using css selector"

docker - 如何在 Docker 容器中使用 PhantomJS 的附加参数?

javascript - 在动态创建的列表 jquery-ui 上使用 connectWith

javascript - Angular - 仅当您单击 div 的特定区域时,div 上的 ng-click 才有效

javascript - jQuery.ui.draggable.js 和 jQuery.ui.widget.js 冲突