আমার কাছে প্রতিশ্রুতির একটি বিন্যাস রয়েছে যা আমি সমাধান করছি 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
হ্যান্ডলারে সমস্ত কোড না দেখিয়ে থাকেন এবং ভিতরে কোনও ত্রুটি রয়েছে। যাইহোক, এই নোড হয়?