পার্থক্য কি?
.then()
কল একটি প্রতিশ্রুতি যে ক্ষেত্রে কলব্যাক করার সময় একটি ত্রুটি ছোঁড়া বাতিল করা হবে ফিরে আসবে। এর অর্থ, যখন আপনার সাফল্য logger
ব্যর্থ হয়, ত্রুটিটি নিম্নলিখিত .catch()
কলব্যাকটিতে পৌঁছে দেওয়া হত , তবে সেই fail
কলব্যাকের সাথে নয় যা এর সাথে চলে success
।
এখানে একটি নিয়ন্ত্রণ প্রবাহ ডায়াগ্রাম রয়েছে:
এটি সিঙ্ক্রোনাস কোডে প্রকাশ করতে:
// some_promise_call().then(logger.log, logger.log)
then: {
try {
var results = some_call();
} catch(e) {
logger.log(e);
break then;
} // else
logger.log(results);
}
দ্বিতীয়টি log
(যা প্রথম যুক্তির মতো .then()
) কেবলমাত্র তখনই কার্যকর করা হবে যদি কোনও ব্যতিক্রম ঘটে না happened লেবেলযুক্ত ব্লক এবং break
বিবৃতিটি কিছুটা বিশৃঙ্খলা বোধ করে, এটি আসলে পাইথনের try-except-else
জন্য যা ছিল (প্রস্তাবিত পড়া!)।
// some_promise_call().then(logger.log).catch(logger.log)
try {
var results = some_call();
logger.log(results);
} catch(e) {
logger.log(e);
}
catch
এটির এছাড়াও সাফল্য এটির কল থেকে ব্যতিক্রম হ্যান্ডেল করবে।
পার্থক্য জন্য অনেক।
চেষ্টা এবং ধরা হিসাবে আমি এর ব্যাখ্যাটি বেশ বুঝতে পারি না
যুক্তিটি হ'ল সাধারণত আপনি প্রক্রিয়াজাতকরণের প্রতিটি ধাপে ত্রুটিগুলি ধরতে চান এবং এটি আপনাকে শিকলগুলিতে ব্যবহার করা উচিত নয়। প্রত্যাশাটি হ'ল আপনার কাছে কেবলমাত্র একটি চূড়ান্ত হ্যান্ডলার রয়েছে যা সমস্ত ত্রুটিগুলি পরিচালনা করে - আপনি যখন "অ্যান্টিপ্যাটার্ন" ব্যবহার করেন তখনকার কিছু কলব্যাকের ত্রুটিগুলি পরিচালনা করা হয় না।
তবে, এই নিদর্শনটি আসলে খুব কার্যকর: আপনি যখন ঠিক এই পদক্ষেপে ঘটেছিল ত্রুটিগুলি পরিচালনা করতে চান এবং যখন কোনও ত্রুটি ঘটেনি তখন আপনি সম্পূর্ণ আলাদা কিছু করতে চান - যখন ত্রুটিটি অপরিবর্তনযোগ্য নয় rable সচেতন হন যে এটি আপনার নিয়ন্ত্রণ প্রবাহকে শাখা করছে । অবশ্যই, এটি কখনও কখনও পছন্দসই হয়।
এই নিম্নলিখিত কি ভুল?
some_promise_call()
.then(function(res) { logger.log(res) }, function(err) { logger.log(err) })
যে আপনি আপনার কলব্যাক পুনরাবৃত্তি ছিল। আপনি বরং চান
some_promise_call()
.catch(function(e) {
return e; // it's OK, we'll just log it
})
.done(function(res) {
logger.log(res);
});
আপনি .finally()
এই জন্য ব্যবহার বিবেচনা করতে পারেন ।
then().catch()
আরও পাঠযোগ্য, কারণ আপনার কমা অনুসন্ধান এবং তদন্ত করার দরকার নেই সাফল্য বা ব্যর্থ শাখার জন্য এই কলব্যাক।