我需要在每次迭代之间循环 3 次和 2 秒。我尝试了这 3 个选项:
选项1
var casper = require('casper').create({
verbose: false,
logLevel: 'debug'
});
casper.start("http://google.com");
casper.on('remote.message', function(msg) {
this.echo('remote message caught: ' + msg);
})
casper.thenEvaluate(function() {
var x = 0;
var intervalID = setInterval(function () {
console.log("Using setInternal " + x);
if (++x === 3) {
window.clearInterval(intervalID);
}
}, 2000);
});
casper.run();
观察:什么都没有出现,因为脚本在第一次setInterval
被调用之前就结束了。
选项 2
替换thenEvaluate()
为then()
以下
for (i=0; i<3; i++) {
this.wait(2000);
this.echo('Using this.wait ' + i);
}
观察:它立即输出 3 次,然后等待很长时间,因为this.wait()
它是异步的。这不是我想要的,因为我想要两者之间的延迟。
选项 3用下面的这个
替换零件then()
。我正在考虑waitFunc()
在每次wait()
被调用后进行递归调用。
var count = 0;
var waitFunc = function() {
this.wait(2000, function() {
if (count < 3) {
casper.echo('Using this.wait ' + count);
count++;
waitFunc();
}
});
};
观察:屏幕上没有打印出来。
所以我的问题是:如何使 this.wait 或 setInterval 像这种情况一样循环工作 3 次?