waitForSelector("...", function success()/function fail() 目的?

waitForSelector("...", function success()/function fail() purpose?

刚开始使用 casperJs 并注意到

的选项
waitForSelector("....", function success() {

},
function fail() {

});

我的问题是,这和对成功代码和错误使用 if/else 语句有什么区别?一个比另一个有好处吗?我在网上和这里搜索过,但没有找到任何确定的东西。

waitForSelector 是一个异步函数,它没有 return 的立即值。这就是它在回调函数中被 return 编辑的原因。 waitForSelector 可能会在链中某处抛出异常,或者可能会意外失败并抛出异常。在这种情况下,错误回调函数 fail() 将被调用,这就是您可以优雅地处理错误的地方。 If/else 是对确定性值起作用的同步行为。

waitForSelector(String selector, Function then, Function onTimeout, Number timeout)

是一个异步步进函数,这就是为什么它不会在找到选择器后立即return,而是立即returns casper对象,因为CasperJS支持流利API。您根本无法使用 if-else 来检查等待是成功还是失败。

waitForSelector() 的调用安排了一个等待步骤。此计划步骤可以通过以下三种方式之一结束:

  • 选择器已找到:then 函数如果通过则作为单独的步骤执行。否则,执行下一个预定步骤。
  • 在等待时间(超时)期间未找到选择器:如果传递了 onTimeout 函数,则此函数将作为单独的步骤执行,从而捕获 onTimeout 错误。如果未通过且没有全局 onTimeout 处理程序,则抛出 CasperError 退出脚本。
  • thenonTimeout 未捕获到其他错误,脚本退出。

因此,如果您将传入的那些函数命名为 successfail,您应该知道这种命名仅在超时功能方面是正确的。