最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - How to pass data from the "then" methods in CasperJS? - Stack Overflow

programmeradmin2浏览0评论

It's mon to have multiple then methods when working with CasperJS. The following is an example:

casper.then(function(){
    var a = "test";
    // ...
})

casper.then(function(){
    // how to use the variable a in the first "then"
})

My question is, what's the mon way to pass values from former thens to following thens? For the aforementioned example, how to use a in the second then?

It's mon to have multiple then methods when working with CasperJS. The following is an example:

casper.then(function(){
    var a = "test";
    // ...
})

casper.then(function(){
    // how to use the variable a in the first "then"
})

My question is, what's the mon way to pass values from former thens to following thens? For the aforementioned example, how to use a in the second then?

Share Improve this question edited Oct 23, 2014 at 22:39 Artjom B. 62k26 gold badges135 silver badges230 bronze badges asked Oct 23, 2014 at 22:20 Just a learnerJust a learner 28.7k53 gold badges166 silver badges248 bronze badges 0
Add a ment  | 

1 Answer 1

Reset to default 8

There are many way, but the easiest would be to use global variables. If you don't want to clutter your scripts with global variables (which should not be of the same concern as global variables in the browser, because there you could have different libraries), you can use IIFEs to reduce the scope.

casper.start(url);
(function(casper){
    var a;
    casper.then(function(){
        // set a
    }).then(function(){
        // use a
    });
})(casper);
casper.run();

Another version of the global one is to add those variables to the casper object.

Probably the cleanest solution would be to nest those blocks that need the variable. You have to keep in mind that a synchronous function call cannot e after an asynchronous one (those are all wait* and then* step functions). Scheduled steps are executed after the current stap has ended:

casper.start(url).then(function(){
    var a; // set a somehow
    this.then(function(){
        // use a
    });
}).then(function(){
    // don't use a
}).run();
发布评论

评论列表(0)

  1. 暂无评论