अपना पहला समारोह में:
async function series() {
await wait(500); // 1
await wait(500); // 2
return "done!";
}
आप जैसे ही यह शुरू कर दिया है पहले wait
का इंतजार करने के लिए जे एस बता रहे हैं।
इसका मतलब यह है दूसरा wait(500)
शुरू नहीं कर सकते, इससे पहले कि पहले एक खत्म:
- उत्प्रेरक
wait(500) // 1
- कि के लिए प्रतीक्षा पारित करने के लिए
- उत्प्रेरक
wait(500) // 2
- इंतजार है कि
पारित करने के लिए
दूसरे समारोह में:
async function parallel() {
const wait1 = wait(500); // 1
const wait2 = wait(500); // 2
await wait1;
await wait2;
return "done!";
}
दोनों wait
कॉल शुरू कर दिया, इससे पहले कि कोड परिणामों का इंतजार करने के लिए कहा जाता है।
- उत्प्रेरक
wait(500) // 1
- उत्प्रेरक
wait(500) // 2
wait1
पारित करने के लिए प्रतीक्षा करें,
- के लिए
wait2
पारित करने के लिए
क्योंकि wait1
और wait2
एक दूसरे के बाद तुरंत ट्रिगर कर रहे हैं इंतजार, वे कर रहे हैं व्यावहारिक रूप से समानांतर में चल रहा है।
इस कल्पना कीजिए:
2 अगर लोग दोनों एक ही समय में एक स्टॉपवॉच शुरू, यदि आप प्रतीक्षा करने के लिए करने से पहले प्रत्येक स्टॉपवॉच 10 सेकंड तक पहुँच जाता है, तब भी आप केवल 10 सेकंड इंतजार करना की जरूरत है।
series
फ़ंक्शन में, दूसरी ओर, दूसरा स्टॉपवॉच पहले एक खत्म होने से पहले शुरू नहीं हो सकता है।
पर जाएं जब आप इसे कॉल करते समय प्रतीक्षा() शुरू करते हैं। "श्रृंखला" में आप इसे कॉल करते हैं और इसका इंतजार करते हैं, फिर इसे कॉल करें और फिर से प्रतीक्षा करें। "समांतर" में आप दो प्रतीक्षा() को एक बार में कॉल करते हैं, और फिर आप उनका इंतजार करते हैं। तो वे दोनों एक ही समय में शुरू किया। –
@ कोर्वेन को प्रतीक्षा नहीं करना चाहिए 1 = प्रतीक्षा करें (500); 'पहले से ही 'setTimeout' शुरू करें 'const प्रतीक्षा 2 = प्रतीक्षा करें (500); निष्पादित हो जाता है? – Blake
मुझे कभी "पूरा नहीं हुआ" क्यों मिलता है! 'श्रृंखला()' या 'समानांतर()' निष्पादित करते समय फ़ायरफ़ॉक्स कंसोल पर लॉग इन किया गया? – Marecky