मेरे पास वादे का एक सरणी है जिसे मैं हल कर रहा हूं Promise.all(arrayOfPromises);
मैं वादा श्रृंखला जारी रखने के लिए आगे बढ़ता हूं। कुछ ऐसा दिखता है
existingPromiseChain = existingPromiseChain.then(function() {
var arrayOfPromises = state.routes.map(function(route){
return route.handler.promiseHandler();
});
return Promise.all(arrayOfPromises)
});
existingPromiseChain = existingPromiseChain.then(function(arrayResolved) {
// do stuff with my array of resolved promises, eventually ending with a res.send();
});
मैं त्रुटियों के मामले में एक व्यक्तिगत वादे को संभालने के लिए एक कैच स्टेटमेंट जोड़ना चाहता हूं, लेकिन जब मैं कोशिश करता हूं, तो Promise.all
वह पहली त्रुटि पाता है जो उसे मिलती है (बाकी की अवहेलना करता है), और फिर मैं बाकी वादों से डेटा प्राप्त नहीं कर सकता सरणी (जो त्रुटि नहीं थी)।
मैंने कुछ ऐसा करने की कोशिश की है ..
existingPromiseChain = existingPromiseChain.then(function() {
var arrayOfPromises = state.routes.map(function(route){
return route.handler.promiseHandler()
.then(function(data) {
return data;
})
.catch(function(err) {
return err
});
});
return Promise.all(arrayOfPromises)
});
existingPromiseChain = existingPromiseChain.then(function(arrayResolved) {
// do stuff with my array of resolved promises, eventually ending with a res.send();
});
लेकिन वह हल नहीं करता है।
धन्यवाद!
-
संपादित करें:
नीचे दिए गए जवाब क्या थे, पूरी तरह से सच थे, कोड अन्य कारणों से टूट रहा था। मामले में किसी को भी दिलचस्पी है, यह समाधान मैं के साथ समाप्त हो गया है ...
नोड एक्सप्रेस सर्वर चेन
serverSidePromiseChain
.then(function(AppRouter) {
var arrayOfPromises = state.routes.map(function(route) {
return route.async();
});
Promise.all(arrayOfPromises)
.catch(function(err) {
// log that I have an error, return the entire array;
console.log('A promise failed to resolve', err);
return arrayOfPromises;
})
.then(function(arrayOfPromises) {
// full array of resolved promises;
})
};
एपीआई कॉल (मार्ग.संकल्प कॉल)
return async()
.then(function(result) {
// dispatch a success
return result;
})
.catch(function(err) {
// dispatch a failure and throw error
throw err;
});
लगता है कि मूल वादों से किसी भी त्रुटि को पकड़ने के उद्देश्य से सेवा के .catch
लिए Promise.all
पहले डाल दिया .then
, लेकिन फिर अगले करने के लिए पूरे सरणी वापस.then
धन्यवाद!
.then(function(data) { return data; })
पूरी तरह से छोड़ दिया जा सकता है
then
या catch
हैंडलर में सभी कोड नहीं दिखा रहे हैं और अंदर एक त्रुटि हो रही है। वैसे, क्या यह नोड है?