Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> JavaScript

JavaScript में एक्शन के बीच डिले (स्लीप) कैसे करें?

setTimeout() कॉलबैक-आधारित है, async/await के साथ Promise लपेटकर सिंक्रोनस-लगने वाला स्लीप बनाएं।

बुनियादी setTimeout (नॉन-ब्लॉकिंग)

console.log("शुरू");
setTimeout(() => {
    console.log("5 सेकंड बाद");
}, 5000);
console.log("तुरंत प्रिंट होता है"); // इंतजार नहीं करता

async/await स्लीप फंक्शन (अनुशंसित)

function sleep(ms) {
    return new Promise(resolve => setTimeout(resolve, ms));
}

// उपयोग
async function demo() {
    console.log("शुरू");
    await sleep(2000);
    console.log("2 सेकंड बाद");
    await sleep(1000);
    console.log("1 सेकंड और बाद");
}

demo();

लूप में स्लीप

async function processWithDelay(items, delayMs) {
    for (const item of items) {
        console.log("प्रोसेसिंग:", item);
        await sleep(delayMs);
    }
    console.log("पूरा हुआ");
}

processWithDelay(['A', 'B', 'C'], 1000);

ब्लॉकिंग स्लीप (नहीं करें - UI फ्रीज होता है)

// ❌ कभी न करें - इवेंट लूप ब्लॉक करता है
function blockingSleep(ms) {
    const start = Date.now();
    while (Date.now() - start < ms) {
        // व्यस्त प्रतीक्षा - CPU 100%
    }
}

चलाने का तरीका

node sleep-demo.js

आउटपुट

शुरू
2 सेकंड बाद
1 सेकंड और बाद

उपयोग के मामले

  • API रेट लिमिटिंग (रिक्वेस्ट के बीच डिले)
  • एनिमेशन स्टेप्स
  • रीट्राय लॉजिक (एक्सपोनेंशियल बैकऑफ)
  • टेस्टिंग/डीबगिंग

एक्सपोनेंशियल बैकऑफ उदाहरण

async function fetchWithRetry(url, maxRetries = 3, baseDelay = 1000) {
    for (let i = 0; i <= maxRetries; i++) {
        try {
            const response = await fetch(url);
            if (response.ok) return response.json();
            throw new Error(`HTTP ${response.status}`);
        } catch (error) {
            if (i === maxRetries) throw error;
            const delay = baseDelay * Math.pow(2, i); // 1s, 2s, 4s...
            console.log(`रिट्राय ${i+1}/${maxRetries} ${delay}ms बाद...`);
            await sleep(delay);
        }
    }
}

नोट

JavaScript में कोई बिल्ट-इन sleep() नहीं है क्योंकि यह सिंगल-थ्रेडेड है। await sleep() केवल उस async फंक्शन को रोकता है, पूरे प्रोग्राम को नहीं।

  1. जावास्क्रिप्ट में लूप में देरी कैसे जोड़ें? जावास्क्रिप्ट में लूप में देरी कैसे जोड़ें?

    लूप में देरी जोड़ने के लिए, जावास्क्रिप्ट में setTimeout() मेथड का उपयोग करें। लूप में देरी जोड़ने के लिए कोड निम्नलिखित है: उदाहरण <!DOCTYPE html> <html lang=en> <head> <meta charset=UTF-8 /> <meta name=viewport content=width=device-width, initial-scale=1.0 /> <tit

  1. - PHP और JavaScript के बीच अंतर

    इस पोस्ट में, हम PHP और JavaScript के बीच अंतर को समझेंगे।JavaScriptयह फ्रंट एंड के साथ-साथ बैक एंड के साथ काम करने में मदद करता है।यह एसिंक्रोनस है, जिसका अर्थ है कि यह इनपुट और आउटपुट संचालन के लिए प्रतीक्षा नहीं करता।यह ब्राउज़र में चल सकता है और Node जारी होने के बाद, JavaScript कमांड लाइन पर भी

  1. - C# में दो DateTime के बीच मिलीसेकंड में अंतर

    मान लीजिए निम्न हमारी तारीखों के लिए दो DateTime ऑब्जेक्ट हैं: DateTime date1 = new DateTime(2018, 8, 11, 08, 15, 20); DateTime date2 = new DateTime(2018, 8, 11, 11, 14, 25); TimeSpan का उपयोग करके दोनों तारीखों के बीच अंतर ढूंढें: TimeSpan ts = date2 - date1; अब मिलीसेकंड प्राप्त करने के लिए निम्न