लेकिन ऐसा करने का उचित तरीका नहीं लगता है ..
यही कारण है कि वास्तव में यह (या कम से कम करने के लिए उचित तरीका है एक यह करने के लिए उचित तरीके से)। यह वादों का एक प्रमुख पहलू है, वे एक पाइपलाइन हैं, और डेटा को पाइपलाइन में विभिन्न हैंडलर द्वारा मालिश किया जा सकता है।
उदाहरण:
const promises = [
new Promise(resolve => setTimeout(resolve, 0, 1)),
new Promise(resolve => setTimeout(resolve, 0, 2))
];
Promise.all(promises)
.then(data => {
console.log("First handler", data);
return data.map(entry => entry * 10);
})
.then(data => {
console.log("Second handler", data);
});
( catch
हैंडलर संक्षिप्तता के लिए छोड़ दिया गया। उत्पादन कोड में, हमेशा या तो वादे का प्रचार करते हैं, या अस्वीकृति को संभालते हैं।)
हम जो आउटपुट देखते हैं, वह है:
पहला हैंडलर [1,2]
दूसरा हैंडलर [10,20]
... क्योंकि पहले हैंडलर को एक सरणी के रूप में दो वादों ( 1
और 2
) का संकल्प मिलता है , और फिर उन 10 में से प्रत्येक के साथ एक नया सरणी बनाता है और इसे वापस करता है। दूसरे हैंडलर को वही मिलता है जो पहले हैंडलर ने वापस किया।
यदि आप जो अतिरिक्त कार्य कर रहे हैं वह समकालिक है, तो आप इसे पहले हैंडलर में भी डाल सकते हैं :
उदाहरण:
const promises = [
new Promise(resolve => setTimeout(resolve, 0, 1)),
new Promise(resolve => setTimeout(resolve, 0, 2))
];
Promise.all(promises)
.then(data => {
console.log("Initial data", data);
data = data.map(entry => entry * 10);
console.log("Updated data", data);
return data;
});
... लेकिन अगर यह अतुल्यकालिक है तो आप ऐसा नहीं करना चाहेंगे क्योंकि यह समाप्त हो रहा है, और घोंसला जल्दी से हाथ से निकल सकता है।
reject
शुरुआतीPromise
समारोह के बाद एक मूल्य के लिए संभव नहीं है ? या श्रृंखला में कहीं भी एक त्रुटि फेंकने के लिए आपको ले जाएगा.catch()
? यदि ऐसा है,reject
तो पहली जगह में क्या है? सिर्फ त्रुटि क्यों नहीं? धन्यवाद फिर से,