জাভা স্ক্রিপ্ট বুঝতে আমার সমস্যা হচ্ছে promises
। আমি নিম্নলিখিত কোডটি লিখেছি:
var p = new Promise(function(resolve,reject){
reject(Error("hello world"));
});
setTimeout(()=>p.catch(e=>console.log(e)),5000);
আমি তাৎক্ষণিকভাবে এটি আমার ক্রোম বিকাশকারী কনসোলে দেখতে পাচ্ছি:
তবে আমি 5 সেকেন্ড অপেক্ষা করার পরে, বার্তাটি স্বয়ংক্রিয়ভাবে এই চিত্রটির মতো কালো হয়ে যায়:
আমি আমার জাভাস্ক্রিপ্ট কোড এবং বিকাশকারী কনসোলের মধ্যে আগে কখনও এই আচরণটি দেখিনি, যেখানে আমার জাভা স্ক্রিপ্ট কোড বিকাশকারী কনসোলে "বিদ্যমান সামগ্রী পরিবর্তন করতে পারে"।
সুতরাং আমি সিদ্ধান্ত নিয়েছি resolve
এই কোডটি লিখে একই পরিস্থিতি ঘটে কিনা :
var p = new Promise(function(resolve,reject){
resolve("hello world");
});
setTimeout(()=>p.then(e=>console.log(e)),5000);
তবে এই পরিস্থিতিতে, আমার বিকাশকারী কনসোল 5 সেকেন্ড পরে কিছু দেখায় না, যা এটি পরে মুদ্রণ করে hello world
।
কেন হয় resolve
এবং reject
যখন তারা প্রার্থনা করছে পরিপ্রেক্ষিতে তাই ভিন্নভাবে চিকিত্সা?
অতিরিক্ত
আমি এই কোডটিও লিখেছি:
var p = new Promise(function(resolve,reject){
reject(Error("hello world"));
});
setTimeout(()=>p.catch(e=>console.log("errors",e)),5000);
setTimeout(()=>p.catch(e=>console.log("errors 2",e)),6000);
setTimeout(()=>p.catch(null),7000);
এটি বিকাশকারী কনসোলে বেশ কয়েকটি আউটপুট দেয়। 0 এ সময় লাল ত্রুটি, পাঠ্য সহ 5 সেকেন্ডে লাল রঙে লাল পরিবর্তন হয় errors hello world
, তারপরে seconds সেকেন্ডে একটি নতুন ত্রুটি বার্তা errors 2 hello world
, তারপরে seconds সেকেন্ডে একটি লাল ত্রুটি বার্তা। reject
প্রকৃতপক্ষে কতবার আহ্বান করা হয়েছে তা নিয়ে আমি এখন খুব বিভ্রান্ত হয়ে পড়েছি .... আমি হারিয়ে গেছি ...
var p = new Promise(function(resolve,reject){ reject(Error("hello world")); });
আরও মূর্খতার সাথে এবং সংক্ষিপ্তভাবে লিখিত হতে পারেvar p = Promise.reject(Error("hello world"));
:-)