Hirdetés

Keresés

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

  • CSorBA

    őstag

    válasz Mr Dini #6334 üzenetére

    De a JavaScript nem így működik. A JS egy szálon fut. Ha valami külső dologra (async) kell várnia, akkor nem állhat le. Ugrik a következő sorra. Hát gondolj bele, ha valami hiba történne, vagy lassú lenne a net, akkor addig állna, míg be nem tölt valamit? És az állt úgy kell érteni, hogy addig semmit sem tudsz csinálni. Épp ezért egy ilyen asyncron kérés visszatér egy promissal, ami ha resolválódik. (Teljesül az ígéret) akkor meghívja a jövőben azt a függvényt, ami erre várt.

    Az általad hozott példát valahogy így lehetne használni:

    function getPage (url) {
    'use strct';
    return new Promise((resolve, reject) => {
    const httpLibrary = url.startsWith('https') ? require('https') : require('http');

    httpLibrary.get(url, (response) => {
    const body = [];

    response.on('data', (chunk) => body.push(chunk));
    response.on('end', () => resolve(body.join('')));

    }).on('error', (error) => {
    console.log('Error!', error.message);
    });
    });
    }

    getPage('http://vanenet.hu').then((html) => doWhateverYouWantWithHTML(html));


    function doWhateverYouWantWithHTML (html) {
    console.log(html);
    }

    A doWhateverYouWantWithHTML-be írod amit szeretnél csinálni, és ez akkor hívódik meg, mikor betöltődött sikeresen a page, amivel meghívtad a getPaget.

    Szerk.: De ahogy látom Jim-Y fórumtárs is erre próbált fentebb rávezetni, egy hasonló példával.
    Tényleg olvasgass a témában, nem feltétlen egyszerű, de mindenkinél van egy pillanat mikor átkattan és megérti.

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