Potrzebuję mieć "nieskończoną" pętlę while, która ma obietnice w środku. Oto przykładowy kod:Jak uzyskać nieskończoną pętlę asynchroniczną z obietnicami
let noErrorsOccured = true
while (noErrorsOccured){
someAsyncFunction().then(() => {
doSomething();
}).catch((error) => {
console.log("Error: " + error);
noErrorsOccured = false;
});
}
function someAsyncFunction() {
return new Promise ((resolve, reject) => {
setTimeout(() => {
const exampleBool = doSomeCheckup();
if (exampleBool){
resolve();
} else {
reject("Checkup failed");
}
}, 3000);
});
}
Tak więc ta pętla while powinna działać bez końca, z wyjątkiem wystąpienia błędu, wtedy pętla while powinna się zatrzymać. Jak mogę to osiągnąć?
Mam nadzieję, że można zrozumieć, co mam na myśli i dzięki z góry :)
reakcje REALIZACJI (wzywające spełnione lub koparki odrzucenie) są wykonywane asynchronicznie po wątku powodując ich być wykonana została zakończona. Pierwsza pętla while to nieskończona ** blokująca ** pętla, tworząca nieskończoną liczbę obietnic, które nigdy nie zostaną rozliczone, ponieważ opóźnienia wywołań zwrotnych nigdy nie występują: D _Possably_ chcesz timeout lub interwałowy timer, który czeka 3 sekundy po poprzedniej obietnicy utworzone dla asynchronicznego sprawdzania zostanie rozliczone przed uruchomieniem innego czeku? – traktor53
Problem polega na tym, że tak naprawdę nie wiem, ile czasu zajmuje moja obietnica do rozwiązania, użyłem tylko 'setTimeout()' do wyjaśnienia mojego przykładu. Ale rozwiązanie Felixa Klinga działa idealnie, więc nie ma potrzeby innego rozwiązania, ale i tak dziękuję :) – C4rmond4i