Jus*_*ner 7 javascript casperjs
then在使用CasperJS时,有多种方法是很常见的.以下是一个例子:
casper.then(function(){
var a = "test";
// ...
})
casper.then(function(){
// how to use the variable a in the first "then"
})
Run Code Online (Sandbox Code Playgroud)
我的问题是,将值从前thens 传递到后续thens 的常用方法是什么?对于前面提到的例子,如何a在第二个使用then?
有很多方法,但最简单的方法是使用全局变量.如果您不希望使用全局变量(与浏览器中的全局变量不同,因为您可以使用不同的库)来混乱脚本,则可以使用IIFE来缩小范围.
casper.start(url);
(function(casper){
var a;
casper.then(function(){
// set a
}).then(function(){
// use a
});
})(casper);
casper.run();
Run Code Online (Sandbox Code Playgroud)
全局的另一个版本是将这些变量添加到casper对象中.
可能最干净的解决方案是嵌套那些需要变量的块.您必须记住,同步函数调用不能在异步函数调用之后(全部wait*和then*步骤函数).当前订书钉结束后执行预定步骤:
casper.start(url).then(function(){
var a; // set a somehow
this.then(function(){
// use a
});
}).then(function(){
// don't use a
}).run();
Run Code Online (Sandbox Code Playgroud)