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
退出脚本。
then
或 onTimeout
未捕获到其他错误,脚本退出。
因此,如果您将传入的那些函数命名为 success
和 fail
,您应该知道这种命名仅在超时功能方面是正确的。
刚开始使用 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
退出脚本。 then
或onTimeout
未捕获到其他错误,脚本退出。
因此,如果您将传入的那些函数命名为 success
和 fail
,您应该知道这种命名仅在超时功能方面是正确的。