पाठ 18 / 28

async/await

ऐसा एसिंक्रोनस कोड लिखें जो सिंक्रोनस जैसा दिखे।

await रुकता है, ब्लॉक नहीं करता

await, चारों ओर के async फ़ंक्शन को Promise settle होने तक रोकता है — बाकी Node चलता रहता है।

import { readFile } from "node:fs/promises";

async function loadNotes() {
  const data = await readFile("notes.txt", "utf8");
  console.log(data.length, "characters");
}

loadNotes();

Promise.all से समानांतर

एक-एक करके await करना अनुक्रमिक है — साथ चलाने के लिए Promise.all उपयोग करें।

async function loadBoth() {
  const [notes, config] = await Promise.all([
    readFile("notes.txt", "utf8"),
    readFile("config.json", "utf8"),
  ]);
  console.log(notes.length, config.length);
}

त्वरित जाँच: जब कोई फ़ंक्शन किसी Promise का await करता है, तब बाकी Node का क्या होता है?

  • यह पूरी तरह रुक जाता है
  • यह बाकी काम चलाता रहता है
  • यह इवेंट लूप को फिर से शुरू करता है
Answer

यह बाकी काम चलाता रहता है — `await` केवल वर्तमान async फ़ंक्शन को रोकता है — इस बीच इवेंट लूप बाकी इवेंट संभालने के लिए स्वतंत्र रहता है।