Sinkrono ili asinkrono izvrsavanje fukcija

Javascript

Funkcija1();
Funkcija2();
Funkcija3();

Dali ce se pri izvrsavanju koda ove funkcije cekati dok se ne izvrsi prethodna?

Ako recimo izvrsavanje prve funkcija traje 1 sekundu. Dali ce javascript engine cekati da se izvrsi do kraja pa krenuti u izvrsavanje druge ili ce bez obzira na izvrsenje prve funkcije do kraja uci u izvrsavanje druge funkcije?

Pogledaj ovaj video i sve će ti biti jasno:

4 Likeova

Zavisi od toga da li se izvrsava sinhrona ili asinhrona operacija :grinning:

Ako npr citas fajl unutar funkcije sinhrono, naravno da ce to biti blocking code i da ce se ostali kod poceti izvrsavati nakon sto je ta operacija citanja zavrsena.

Odlican video je postavio @m1l4n

2 Likeova

Ako je sav proces unutar tih funkcija sinhron, onda se čekaju svakako.
Npr. neka u prvoj funkciji postoji neki loop od milijardu iteracija…koji traje pet sekundi…sve će čekati dok se taj loop ne završi. Pa čak i browser neće izgledati najsretniji tih pet sekundi :smiley:

Ali ako imaš unutar prve od tih funkcija asinkroni poziv…npr. ajax konekciju prema serveru. …onda ona grana code-a koja se odvaja tim asinkronim pozivom postaje nezavisna od ostatka.

Tj. ostale dvije funkcije će se nastaviti izvršavati bez obzira što ajax response sa servera stiže tek nakon cca 3 sekunde.

S time da kod ajax poziva možeš podesiti da se i on odvija sinkrono, onda će sve čekati dok se ta konekcija ne završi… (ali to nije baš praksa da se tako radi)

Uglavnom, kao što belmin reče. Ako imaš neku metodu koja se odvija asinkrono, onda ostatak codea ne čeka da se to desi.
A sve što je sinkrono…se odvija slijedno jedno po jedno…

1 Like

Ako zelis nesto async onda moras koristiti promise ili async. Ali ako u normalonoj funkciji pozivas nesto sto vraca promise onda ce se vratit iz funkcije odmah, a resolve ce e obavit poslje.

1 Like

Evo i na djelu stvar koju sam ukratko objasnio

E sad uzmi situaciju da imas neki malo veci file za citanje, sigurno ne bih htio blokirati izvrsavanje ostatka koda, sve dok se taj file ne iscita u potpunosti :smiley:

2 Likeova
1 Like

Koristi li ko async/await ? Meni se osobno ne svidja prvenstveno zbog error handlinga.

try/catch za svaki poziv mi izgleda bas “noisy” u kodu, tako da ostajem vjeran promisima :smiley:
Evo primjer sa async/await - bez error handlinga.

const logReadAsync = async () => {
  console.log("reading process started as async");
  const data = await readAsyncWithPromise("src/file.txt");
  console.log("reading done as async! file content: ", data);
  console.log("reached the end of async");
};
1 Like

Ma to su samo uveli da bi ugodili C# developerima :grinning:
I meni su promises bolji.