ప్రధాన కంటెంట్‌కు వెళ్లండి
మాడ్యూల్ 8 · 4లో పాఠం 4కోర్సులో 32/32~15 min
మాడ్యూల్ పాఠాలు (4/4)

సవాలు: వాగ్దానాలతో షెడ్యూల్ చేయడం

"షెడ్యూలింగ్" అంటే అసింక్ టాస్క్‌ల జాబితాను ఎలా అమలు చేయాలో నిర్ణయించడం: అన్నీ కలిసి, ఒక సమయంలో, లేదా చిన్న సమూహాలలో. మేము Promise.all, for await, మరియు మూసివేతలను కలుపుతాము.

సమాంతరంగా: అన్నీ కలిసి

పనులు స్వతంత్ర మరియు వేగంగా ఉన్నప్పుడు, వాటన్నింటినీ ప్రారంభించి, Promise.allతో వేచి ఉండండి:

JS
async function inParallelo(tasks) {
  return Promise.all(tasks.map((t) => t()));
}

const risultati = await inParallelo([
  () => Promise.resolve(1),
  () => Promise.resolve(2),
  () => Promise.resolve(3),
]);
// [1, 2, 3]

నెమ్మదైన టాస్క్ యొక్క మొత్తం సమయం ≈ సమయం.

సిరీస్‌లో: ఒక్కోసారి

ప్రతి పని మునుపటిదానిపై ** ఆధారపడి ఉన్నప్పుడు లేదా మీరు రేట్-పరిమితిని కోరుకున్నప్పుడు:

JS
async function inSerie(tasks) {
  const risultati = [];
  for (const t of tasks) {
    risultati.push(await t());
  }
  return risultati;
}

సమయాల మొత్తం సమయం ≈ మొత్తం.

ఏకకాల పరిమితితో

కొన్నిసార్లు మీరు వెయ్యి ఏకకాల అభ్యర్థనలను కోరుకోరు, కానీ మీరు వాటి కోసం వేచి ఉండకూడదు సిరీస్ గాని: మీరు విమానంలో ** గరిష్టంగా N కావాలి**.

JS
async function conLimite(tasks, n) {
  const risultati = new Array(tasks.length);
  let i = 0;
  async function worker() {
    while (i < tasks.length) {
      const mio = i++;
      risultati[mio] = await tasks[mio]();
    }
  }
  await Promise.all(Array.from({ length: n }, worker));
  return risultati;
}

ఆలోచన: మీరు n "కార్మికులను" ప్రారంభించండి, వారు ఏమీ మిగిలి ఉండనంత వరకు తదుపరి సూచికను పొందుతారు.

దీనిని ప్రయత్నించండి

వ్యాయామం#js.m8.l4.e1
ప్రయత్నాలు: 0లోడ్ అవుతోంది...

`ఇన్‌సిరీస్(టాస్క్‌లు)` అసమకాలీకరణను నిర్వచించండి: వాగ్దానాలను తిరిగి ఇచ్చే ఫంక్షన్‌ల శ్రేణిని అందించండి, వాటిని ఒక్కొక్కటిగా అమలు చేయండి (వేచి ఉండండి) మరియు ఫలితాల శ్రేణిని అమలు క్రమంలో అందించండి.

ఎడిటర్ లోడ్ అవుతోంది…
సూచనను చూపించు

కోసం ... యొక్క మరియు పుష్(వెయిట్ t())

3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది

వ్యాయామం సమీక్షించండి

వ్యాయామం#js.m8.l4.e2
ప్రయత్నాలు: 0లోడ్ అవుతోంది...

`inParallel(tasks)` asyncని నిర్వచించండి: వాగ్దానాలను తిరిగి ఇచ్చే ఫంక్షన్‌ల శ్రేణిని అందించండి, వాటిని అన్నింటినీ సమాంతరంగా ప్రారంభించండి మరియు ఇన్‌పుట్ వలె అదే క్రమంలో ఫలితాల శ్రేణిని అందించండి. Promise.all ఉపయోగించండి.

ఎడిటర్ లోడ్ అవుతోంది…
సూచనను చూపించు

Promise.all(tasks.map((t) => t()))

3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది