Új hozzászólás Aktív témák

  • Taci

    addikt

    Szükségem lenne egy függvényre, ami egészen addig nem engedi tovább futni a szkript többi részét, amíg a szükséges változó értéket nem kap (mert utána azzal az értékkel dolgoznék tovább).
    (Nem lehet összedrótozni/egybeágyazni őket sehogy, hogy csak akkor fusson a szkript maradék része, ha az érték visszajött az adatbázisból. Sajnos ez nem megoldható.)

    Ilyesmit kezdtem el összerakni, de nem úgy működik, ahogy szeretném:
    function waitForResult(resultToWaitFor, acceptValue){
        console.log("In waitForResult. resultToWaitFor = " + resultToWaitFor);
        if (typeof resultToWaitFor !== 'undefined'){
            setTimeout(function(){
                waitForResult();
                console.log("Waiting for result.")
                if (resultToWaitFor >= acceptValue){
                    return 0;
                }
            }, 100);
        } else {
            console.log("Megvan az eredmény.");
            return 0;
        }
    }

    ***** Az elképzelés lényege az lenne, hogy 100ms-onként ellenőrzi, hogy kapott-e már értéket a vizsgált változó. Ha nem, ellenőrzi újra (rekurzívan). Ha kapott, kilép, és engedi futni az utána következő részeket. Nem ad vissza értéket. Semmit nem csinál, csak "feltartja" a szkriptet addig, amíg a változó értéket nem kap. (És mindig kap. Jellemzően pár tized mp-en belül, viszont van, hogyha "túlbuzgó" a user, eljuthat ahhoz a részhez a kódhoz, ahol használni kell ezt az értéket, mielőtt még materializálódna a változó. Ezt szeretném orvosolni.)

    Ha a jelen formájában használom, hiába érkezik meg az érték, folyamatosan pörög tovább (logban látszódik, hogy Waiting for result-ot dobálja eszement módon utána is).

    Pont ennek utánajárva találtam, hogy az első if-ágban is kell egy return - a belső ellenőrzést (és vele az acceptValue-t) ezért hoztam be. De nem segített.

    A return 0 azért lett, mert a sima return-nal nem (sem működött), próbáltam hát így is.

    ----------
    Vagy csináljak egy setTimeout-os, while-os ellenőrzést, a végén emelgetve egy számlálót, és megadok egy értéket neki, amit soha nem érhet el? Max ez a backup plan, de jó lenne a későbbiekben is egy ilyen "waitForResult" függvény, jó lenne azt rendbe rakni.

    Irányt tudnátok mutatni a témában, kérlek?

Új hozzászólás Aktív témák