Skip to main content

असिंक्रोनस प्रोसेसिंग का कार्यान्वयन

इस बार हम असिंक्रोनस प्रोसेसिंग का अवलोकन और Office स्क्रिप्ट में असिंक्रोनस प्रोसेसिंग का कार्यान्वयन सैंपल कोड के साथ समझाएंगे।

असिंक्रोनस प्रोसेसिंग के बारे में

असिंक्रोनस प्रोसेसिंग का मतलब है कि प्रोसेसिंग को सिंक्रोनस तरीके से नहीं किया जाता है।

कार्यान्वयन के तरीके को समझाने से पहले, कृपया नीचे दिए गए कोड को देखें।

fetch
function fetch(input: RequestInfo, init?: RequestInit): Promise<Response>;

यह बाहरी सेवा से डेटा प्राप्त करने वाले fetch फ़ंक्शन की प्रकार परिभाषा है।

आप देख सकते हैं कि फ़ंक्शन का रिटर्न वैल्यू Promise में लिपटा हुआ है।

असिंक्रोनस प्रोसेसिंग का परिणाम सभी Promise में लिपटे होते हैं, जो "परिणाम वापस आ रहा है या नहीं" की स्थिति को दर्शाता है।

fetch
async function fetchGoogle() {
const response = await fetch('https://www.google.com');

console.log('Google से डेटा प्राप्त किया गया');
}

function main(workbook: ExcelScript.Workbook) {
fetchGoogle();

console.log('Google से डेटा प्राप्त करने के बाद की प्रोसेसिंग');
}

ऊपर का सैंपल असिंक्रोनस फ़ंक्शन fetchGoogle को परिभाषित करता है और main फ़ंक्शन से कॉल करता है।

fetchGoogle का कार्यान्वयन इस समय "असिंक्रोनस में परिणाम वापस आने वाला (Promise लौटाने वाला) फ़ंक्शन" के रूप में समझा जा सकता है। ध्यान देने वाली बात यह है कि main फ़ंक्शन का व्यवहार है।

आप उम्मीद करेंगे कि fetchGoogle के पूरा होने के बाद, main फ़ंक्शन में बाद की प्रोसेसिंग की जाएगी, लेकिन वास्तविक परिणाम इस प्रकार है:

परिणाम
Google से डेटा प्राप्त करने के बाद की प्रोसेसिंग
Google से डेटा प्राप्त किया गया

आप देख सकते हैं कि main फ़ंक्शन में बाद की प्रोसेसिंग पहले हो रही है।

इस प्रकार, यदि असिंक्रोनस प्रोसेसिंग को प्रतीक्षा करने का आदेश निर्दिष्ट नहीं किया गया है, तो Promise में लिपटे असिंक्रोनस प्रोसेसिंग का परिणाम पूरा होने की प्रतीक्षा किए बिना बाद की प्रोसेसिंग की जाती है।

असिंक्रोनस
async function fetchGoogle() {
const response = await fetch('https://www.google.com');

console.log('Google से डेटा प्राप्त किया गया');
}
async function main(workbook: ExcelScript.Workbook) {
await fetchGoogle();

console.log('Google से डेटा प्राप्त करने के बाद की प्रोसेसिंग');
}

main फ़ंक्शन के function के पहले async और fetchGoogle(); के पहले await जोड़ा गया है।

इससे आप अपेक्षित परिणाम प्राप्त कर सकते हैं।

परिणाम
Google से डेटा प्राप्त किया गया
Google से डेटा प्राप्त करने के बाद की प्रोसेसिंग

async/await का उपयोग करते हुए असिंक्रोनस प्रोसेसिंग

Office स्क्रिप्ट में सबसे अनुशंसित असिंक्रोनस प्रोसेसिंग का तरीका async/await का उपयोग करना है।

कार्यान्वित करने वाले फ़ंक्शन के function के पहले async जोड़कर, और असिंक्रोनस परिणाम लौटाने वाले फ़ंक्शन के पहले await जोड़कर, असिंक्रोनस फ़ंक्शन के परिणाम को प्राप्त करने तक प्रोसेसिंग प्रतीक्षा करती है।

async/await
async function main(workbook: ExcelScript.Workbook) {
/** Google की वेबसाइट से प्रतिक्रिया */
const google = await fetch('https://www.google.com');

console.log('Google से डेटा प्राप्त किया गया');

/** Yahoo की वेबसाइट से प्रतिक्रिया */
const yahoo = await fetch('https://www.yahoo.co.jp');

console.log('Yahoo से डेटा प्राप्त किया गया');
}

Promise का उपयोग करते हुए असिंक्रोनस प्रोसेसिंग

जैसा कि पहले बताया गया है, असिंक्रोनस फ़ंक्शन का परिणाम सभी Promise ऑब्जेक्ट में लिपटे होते हैं, इसलिए Promise ऑब्जेक्ट के मेथड का उपयोग किया जा सकता है।

इस मामले में, function के पहले async जोड़ने की आवश्यकता नहीं है।

Promise
function main(workbook: ExcelScript.Workbook) {
fetch('https://www.google.com')
.then((google) => {
console.log('Google से डेटा प्राप्त किया गया');

return fetch('https://www.yahoo.co.jp');
})
.then((yahoo) => {
console.log('Yahoo से डेटा प्राप्त किया गया');
});
}

async/await पैटर्न की तुलना में, इस Promise.then द्वारा मेथड चेन का उपयोग करने का तरीका सामान्य सिंक्रोनस प्रोसेसिंग से बहुत अलग है, इसलिए पठनीयता कम हो सकती है।

अपरिहार्य मामलों को छोड़कर, async/await का उपयोग करने की सिफारिश की जाती है।