从另一个函数调用时,phantom.exit(-1)不起作用

时间:2012-12-12 10:40:51

标签: javascript callback scope phantomjs exit-code

我正在使用PhantomJS来运行JavaScript。有一个函数phantom.exit()接受退出代码作为第一个参数。

以下是它的工作方式......

var page = require("webpage").create(),
    $ = require("jquery")

page.open("http://127.0.0.1:8081/", function (status) {
    var title = page.evaluate(function() {
        return $("title").text()
    })
    phantom.exit(-1)
})

返回的退出代码为-1或255,如预期的那样。

我的问题是我需要在调用函数时退出脚本。我的函数包含phantom.exit(-1)

var page = require("webpage").create(),
    $ = require("jquery")

function foo() {
    phantom.exit(-1)
}

page.open("http://127.0.0.1:8081/", function (status) {
    var title = page.evaluate(function() {
        return $("title").text()
    })
    foo()
    phantom.exit()
})

问题是phantom.exit(-1)函数中的foo()未被调用,退出代码为0。

有一种解决方法可以检查我的函数中的返回值并手动调用phantom.exit(),但这不是我想要的...非常感谢任何帮助!

1 个答案:

答案 0 :(得分:3)

有可能foophantom.exit的{​​{1}}函数调用被page.open回调覆盖了。

因此,调用foo()将退出代码设置为-1 然后,在没有参数的情况下调用phantom.exit,将退出代码设置回0。

因为幻像本身可能会在执行完所有内容后返回退出代码,所以你得到0,没有-1的迹象。