ধরে নেওয়া হয়েছে যে প্রস্তাবিত সমাধানটি @ বারবার সমাধানটি এটি একটি ভাল সমাধান কারণ (new Date()).getTime()
এটির জন্য উইন্ডোজ মিলিসেকেন্ড এবং সমষ্টি একটিtick
এই বিরতিতে সংঘর্ষের ক্ষেত্রে , আমরা বিল্ট-ইন ব্যবহার করার জন্য বিবেচনা করতে পারি যেহেতু আমরা এখানে স্পষ্টভাবে দেখতে পাচ্ছি:
মুষ্টি আমরা এখানে দেখতে পাচ্ছি যে কীভাবে 1/1000 উইন্ডো ফ্রেমে ব্যবহার করে সংঘর্ষ হতে পারে (new Date()).getTime()
:
console.log( (new Date()).getTime() ); console.log( (new Date()).getTime() )
VM1155:1 1469615396590
VM1155:1 1469615396591
console.log( (new Date()).getTime() ); console.log( (new Date()).getTime() )
VM1156:1 1469615398845
VM1156:1 1469615398846
console.log( (new Date()).getTime() ); console.log( (new Date()).getTime() )
VM1158:1 1469615403045
VM1158:1 1469615403045
দ্বিতীয়ত আমরা প্রস্তাবিত সমাধানটি চেষ্টা করি যা 1/1000 উইন্ডোতে সংঘর্ষ এড়ায়:
console.log( window.mwUnique.getUniqueID() ); console.log( window.mwUnique.getUniqueID() );
VM1159:1 14696154132130
VM1159:1 14696154132131
এটি বলেছিল যে আমরা নোডের মতো ফাংশনগুলি ব্যবহার করতে বিবেচনা করতে পারি process.nextTick
যা ইভেন্ট লুপকে একক হিসাবে ডাকা হয় tick
এবং এটি এখানে ভালভাবে ব্যাখ্যা করা হয়েছে । অবশ্যই ব্রাউজারে process.nextTick
তাই নেই যে আমাদের কীভাবে এটি করতে হবে তা নির্ধারণ করতে হবে।
এই বাস্তবায়ন একটি ইনস্টল করবে nextTick
ব্রাউজার আছে মধ্যে ইনপুট / আউটপুট সবচেয়ে কাছাকাছি ফাংশন ব্যবহার করে ব্রাউজারে ফাংশন setTimeout(fnc,0)
, setImmediate(fnc)
, window.requestAnimationFrame
। এখানে প্রস্তাবিত হিসাবে আমরা এটি যুক্ত করতে পারি window.postMessage
, তবে আমি এটি পাঠকের কাছে রেখেছি কারণ এটির একটি দরকারaddEventListener
পাশাপাশি । মূল মডিউল সংস্করণগুলি এখানে সরল রাখতে আমি সংশোধন করেছি:
getUniqueID = (c => {
if(typeof(nextTick)=='undefined')
nextTick = (function(window, prefixes, i, p, fnc) {
while (!fnc && i < prefixes.length) {
fnc = window[prefixes[i++] + 'equestAnimationFrame'];
}
return (fnc && fnc.bind(window)) || window.setImmediate || function(fnc) {window.setTimeout(fnc, 0);};
})(window, 'r webkitR mozR msR oR'.split(' '), 0);
nextTick(() => {
return c( (new Date()).getTime() )
})
})
সুতরাং আমরা 1/1000 উইন্ডোতে আছে:
getUniqueID(function(c) { console.log(c); });getUniqueID(function(c) { console.log(c); });
undefined
VM1160:1 1469615416965
VM1160:1 1469615416966