在下面的javascript程序中(欧拉问题5)我正在练习编写异步/非阻塞函数。该程序试图找到能被数字 1-10 整除的最小数字。2520 是第一个最小的,这是程序应该停止的地方。
我设置了程序,如果这些功能一起运行,那么应该首先完成第二个 checkNum 并首先打印第二个,然后是第一个,但这没有发生吗?
如何让函数同时运行,而不是一个接一个地运行?我期待我调用的第二个 checkNum 函数的回调首先被调用(因为它开始更接近答案),然后是第一个,但事实并非如此。非常感谢!
var divides = function(a, b) {
return b % a == 0;
};
function checkNum(counter, callback) {
var noRemainder = 0;
var forward = true;
while (forward)
{
for (var i = 1; i <= 10; i++) {
if (divides(i, counter))
{ noRemainder++; }
}
if (noRemainder == 10) {
console.log(counter);
forward = false;
callback(counter);
} else {
console.log(noRemainder);
noRemainder = 0;
counter++;
console.log(counter);
}
}
}
checkNum(1, function(counter) {
setTimeout(function(){
console.log("The counter is: " + counter)},3000)
}
);
checkNum(2500, function(counter) {
setTimeout(function(){
console.log("The counter2 is: " + counter) },3000)
}
);