thenEvaluate()是否以与evaluate()相同的方式返回?

时间:2014-11-06 15:15:58

标签: javascript casperjs

所以我知道我可以使用return ...

window将数据返回给casper
casper.evaluate(function() {
    return 'foobar';
}, {});

如何使用thenEvaluate()实现相同的目标?

1 个答案:

答案 0 :(得分:1)

您无法从casper.thenEvaluate返回任何内容。它将被忽视。您需要使用casper.then将其拆分为casper.evaluate。有关类似内容,请参阅this question

casper.thenEvaluate是一个异步步骤函数,就像所有其他then*wait*函数一样。从异步函数返回有用的东西是不可能的。你最想要的是:

var something;
casper.start(url).then(function(){
    something = this.evaluate(function(){
        return 'foobar';
    });
    this.click("someSelector");
}).then(function(){
    // do something with "something" on the new page
});

我怀疑你不会问你以后是否不想使用something。所有步骤函数都返回初始casper对象,以便脚本可以使用promise语法编写,如上例所示。