这是代码:
var number = 0;
function twentySeconds() {
if (number <= 1) {
loop();
number++;
console.log('Try number: ' + number);
}
};
if (number > 2) {
clearInterval(twentySeconds)
console.log('Closing program!')
driver.quit()
return;
}
setInterval(twentySeconds, 20000);
因此,我正在创建一个Firefox实例,然后使用它多次搜索网站。尝试多次后,程序应停止(在这种情况下,第三次尝试后,程序应停止)。
问题是,最后(当它结束第三次检查时)driver.quit()将关闭浏览器并结束代码的执行。相反,它只是冻结,而无需关闭浏览器并结束程序。
是什么原因引起的?我需要为每次搜索打开一个标签吗?
有关代码的完整视图,请转到https://github.com/PrinceMatthew/bitcoinProjects/blob/master/improved_address_verifier.js
最佳答案
if
语句主体中的代码(在twentySeconds
函数外部的代码)将永远不会执行,因为在评估条件(number
)时0
始终是number > 2
。您应该将该if语句移到twentySeconds
函数中。
除此之外,clearInterval(twentySeconds)
将不起作用,因为twentySeconds
是一个函数,并且clearInterval
的第一个参数应该是间隔的ID(setInterval(..)
返回的值)。
尝试这个:
var number = 0;
var intervalId = setInterval(twentySeconds, 20000);
function twentySeconds() {
if (number <= 1) {
loop();
number++;
console.log('Try number: ' + number);
}
if (number > 2) {
clearInterval(intervalId)
console.log('Closing program!')
driver.quit();
}
}