Promise क्लास के आने से पहले, एसिंक्रोनस कोड से निपटने का सिर्फ एक ही तरीका था: कॉलबैक पैटर्न।
कॉलबैक एक ऐसा फंक्शन है जिसे किसी दूसरे फंक्शन को आर्गुमेंट के रूप में दिया जाता है, और उस दूसरे फंक्शन में कोई काम पूरा हो जाने पर उसे कॉल किया जाता है। ऐसे कॉलबैक फंक्शन का एक आम पैटर्न यह है कि वे पहले पैरामीटर के रूप में एक "एरर" लेते हैं (नीचे उदाहरण देखिए)।
function callback(error, arg2, arg3) {}
इसका एसिंक्रोनस कोड से क्या संबंध है?
पहले के समय में कॉलबैक इसलिए इस्तेमाल किए जाते थे कि कोई एसिंक्रोनस काम पूरा होने के बाद हम कुछ और कर सकें, और यह पूरे प्रोग्राम को रोके बिना हो।
fetchProduct(productId, function (error, data) {
if (error) {
// Handle the error
} else {
// Do some work
}
});
ऊपर के उदाहरण में, fetchProduct फंक्शन (जो एसिंक्रोनस है) दूसरे आर्गुमेंट के रूप में एक कॉलबैक लेता है, जो यह तय करता है कि प्रोडक्ट का डेटा मिल जाने पर क्या करना है।
इस अभ्यास के दो उद्देश्य हैं:
promisify फंक्शन बनाइए जो "कॉलबैक पैटर्न" इस्तेमाल करने वाले फंक्शन को ऐसे फंक्शन में बदल देता है जो एक Promise लौटाता है। नीचे दिया गया उदाहरण देखिए।function fetchProduct(productId, function(error, data) {
if (error) {
// Handle the error
} else {
// Make something with your data
}
})
const fetchProductAsPromise = promisify(fetchProduct);
// Now you got a function `fetchProductAsPromise`
// that returns a promise
fetchProductAsPromise(productId)
.then((data) => {})
.catch((error) => {});
Promise के बिल्ट-इन मेथड फिर से बनाइए (उन्हें इस्तेमाल किए बिना)all: प्रॉमिस का एक ऐरे लेता है और तब पूरा होता है जब उनमें से सभी पूरे हो जाएँ, या तब अस्वीकार होता है जब उनमें से एक अस्वीकार हो जाए।allSettled: प्रॉमिस का एक ऐरे लेता है और तब पूरा होता है जब वे सभी या तो पूरे हो जाएँ या अस्वीकार हो जाएँ।race: प्रॉमिस का एक ऐरे लेता है और जो पहला प्रॉमिस पूरा या अस्वीकार होता है, उसकी वैल्यू के साथ पूरा या अस्वीकार हो जाता है।any: प्रॉमिस का एक ऐरे लेता है और तब पूरा होता है जब उनमें से एक पूरा हो जाए, या तब अस्वीकार होता है जब वे सभी अस्वीकार हो जाएँ।Exercism पर साइन अप कीजिए और JavaScript को 37 कॉन्सेप्ट159 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।