Я учу себя асинхронному JS и написал небольшую тестовую программу, чтобы помочь мне лучше понять, как она работает.
Я ожидал с этим кодом, что четные числа будут проверяться не по порядку, так как я добавил задержку в функцию "TestPrime ()". Тем не менее, когда код выполняется, числа работают в последовательности. Другими словами, я ожидал что-то вроде:
3 простое
5 простое
2 простое
...
async function TestPrime(num) {
for(var i = 2; i < num; i++){
let res = num % i;
if (num % 2 == 0) {
setTimeout(()=>{}, 1500);
}
if (res == 0) {
return ({number: num, prime: false});
}
}
return ({ number: num, prime: true});
}
const f = ()=>{
for (var i = 2; i <= 50; i++){
if (TestPrime(i).then(p => {
if (p.prime)
console.log('%s is prime', p.number);
else
console.log('%s is NOT prime', p.number);
}));
}
}
f();
Я уверен, что это просто недоразумение по поводу асинхронного программирования JS, но я был бы очень признателен, если бы кто-то там смог меня поправить.
Заранее большое спасибо!