使用CasperJS时,有多个then
方法很常见。以下是一个例子:
casper.then(function(){
var a = "test";
// ...
})
casper.then(function(){
// how to use the variable a in the first "then"
})
我的问题是,将值从前then
传递到跟随then
的常用方法是什么?对于上述示例,如何在第二个a
中使用then
?
答案 0 :(得分:9)
有很多方法,但最简单的方法是使用全局变量。如果您不想使用全局变量(与浏览器中的全局变量不同,因为您可能有不同的库)将脚本混乱,您可以使用IIFE来缩小范围。 / p>
casper.start(url);
(function(casper){
var a;
casper.then(function(){
// set a
}).then(function(){
// use a
});
})(casper);
casper.run();
全局版的另一个版本是将这些变量添加到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();