📖
Teorie
Asynchronní: non-blocking, callbacks/promises/async-await. Paralelní a souběžné zpracování: vlákna, procesy, race conditions, mutex/lock, semaphore, deadlock, thread-safety, concurrent collections. V JS event loop, microtasks vs macrotasks.
🎯
Tahák
- 1async/await syntaktický cukr nad promises
- 2race condition = sdílená data bez synchronizace
- 3deadlock příčina: cyklické čekání
❓
Typické otázky u maturity
- 1Co jsou race conditions?
- 2Jak zabránit deadlocku?
🏷️
Klíčová slova
asyncawaitthreadmutexrace condition
⚡
Praktická část
Zadání:
Napište async funkci která spustí 3 HTTP požadavky paralelně a vrátí první úspěšný výsledek (Promise.race-like) s timeoutem.
Kroky:
- 1Použij Promise.race
- 2Přidej timeout wrapper
Kód:
firstSuccess.ts
export async function firstSuccess<T>(proms: Promise<T>[], msTimeout=3000): Promise<T>{
const timeout = new Promise<never>((_, rej)=>setTimeout(()=>rej(new Error('timeout')), msTimeout));
return Promise.race([...proms, timeout]);
}