असिंक्रोनस प्रोसेसिंग का कार्यान्वयन
इस बार हम असिंक्रोनस प्रोसेसिंग का अवलोकन और Office स्क्रिप्ट में असिंक्रोनस प्रोसेसिंग का कार्यान्वयन सैंपल कोड के साथ समझाएंगे।
असिंक्रोनस प्रोसेसिंग के बारे में
असिंक्रोनस प्रोसेसिंग का मतलब है कि प्रोसेसिंग को सिंक्रोनस तरीके से नहीं किया जाता है।
कार्यान्वयन के तरीके को समझाने से पहले, कृपया नीचे दिए गए कोड को देखें।
function fetch(input: RequestInfo, init?: RequestInit): Promise<Response>;
यह बाहरी सेवा से डेटा प्राप्त करने वाले fetch
फ़ंक्शन की प्रकार परिभाषा है।
आप देख सकते हैं कि फ़ंक्शन का रिटर्न वैल्यू Promise
में लिपटा हुआ है।
असिंक्रोनस प्रोसेसिंग का परिणाम सभी Promise
में लिपटे होते हैं, जो "परिणाम वापस आ रहा है या नहीं" की स्थिति को दर्शाता है।
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 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
जोड़ने की आवश्यकता नहीं है।
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
का उपयोग करने की सिफारिश की जाती है।