我是 CasperJS 的新手,我遇到了 evaluate() 函数的问题。我有以下示例代码:
var results = []; // a global var
var links = [link1, link2 ,....]; //a list of urls
var current = 0;
function search(url){
this.start(url, function(){
results = this.evaluate(function() {
var returnVal = [];
//some code to store data into returnVal
return returnVal;
};
})
}
function check(){
if(current<7){
this.echo('---Page' + (current + 1) + '---');
search.call(this, links[current]);
console.log(results.length);
this.run(check);
current++;
} else{
this.exit();
}
casper.start()
casper.then(function(){this.echo("starting");});
casper.run(check);
所以基本上代码应该从 7 页中收集一些数据并将数据存储在全局 var 结果中。每页有 50 个要存储的数据。所以预期的输出是:
Starting
---Page1---
50
---Page2---
100
---Page3---
150
...
但实际输出是:
Starting
---Page1---
0
---Page2---
50
---Page3---
50
...
我预计每次迭代后结果的长度都会增加。但是,当我运行它时,结果的长度保持不变,这意味着在第一次迭代之后,它从未改变过。另外,我不明白为什么page1上的长度为0。我不明白为什么会这样。