লেবেলগুলি ব্যবহার করে বিলম্ব করুন মাল্টি ফাংশন
এই সমাধানটি আমি নিয়ে কাজ করি। এটা কোনো ফাংশন আপনি চান তার উপর সঞ্চালনের বিলম্বিত হবে । এটি কীডাউন অনুসন্ধান কোয়েরি হতে পারে, সম্ভবত পূর্ববর্তী বা পরবর্তী বোতামগুলিতে দ্রুত ক্লিক (এটি অন্যথায় যদি একটানা ক্লিক করা হয় তবে একাধিক অনুরোধ প্রেরণ করা হবে, এবং সর্বোপরি ব্যবহার করা হবে না)। এটি এমন একটি গ্লোবাল অবজেক্ট ব্যবহার করে যা প্রতিটি সম্পাদনের সময় সংরক্ষণ করে এবং এটি সর্বাধিক বর্তমান অনুরোধের সাথে তুলনা করে।
সুতরাং ফলাফলটি হ'ল কেবলমাত্র সর্বশেষ ক্লিক / ক্রিয়াকলাপটি আসলেই ডাকা হবে, কারণ সেই অনুরোধগুলি একটি সারিতে সঞ্চিত থাকে, যে একই মিলের সাথে আর কোনও অনুরোধ উপস্থিত না থাকলে X মিলিসেকেন্ড কল করার পরে!
function delay_method(label,callback,time){
if(typeof window.delayed_methods=="undefined"){window.delayed_methods={};}
delayed_methods[label]=Date.now();
var t=delayed_methods[label];
setTimeout(function(){ if(delayed_methods[label]!=t){return;}else{ delayed_methods[label]=""; callback();}}, time||500);
}
আপনি নিজের বিলম্বের সময়টি সেট করতে পারেন (এটি optionচ্ছিক, 500 মিমি ডিফল্ট)। এবং আপনার ফাংশন আর্গুমেন্টগুলি "ক্লোজার ফ্যাশনে" প্রেরণ করুন।
উদাহরণস্বরূপ, যদি আপনি বেলো ফাংশনটি কল করতে চান:
function send_ajax(id){console.log(id);}
একাধিক সেন্ড_এজ্যাক্স অনুরোধ রোধ করতে আপনি এগুলি ব্যবহার করে বিলম্ব করুন :
delay_method( "check date", function(){ send_ajax(2); } ,600);
"অনুরোধের তারিখ" লেবেলটি ব্যবহার করে এমন প্রতিটি অনুরোধ কেবল তখনই ট্রিগার করা হবে যদি mil০০ মিলিসেকেন্ড সময়সীমার মধ্যে অন্য কোনও অনুরোধ না করা হয়। এই যুক্তি alচ্ছিক
লেবেল স্বাধীনতা (একই লক্ষ্য ফাংশন কলিং) কিন্তু উভয় চালান:
delay_method("check date parallel", function(){send_ajax(2);});
delay_method("check date", function(){send_ajax(2);});
একই ফাংশনটিতে কল করার ফলাফল রয়েছে তবে তাদের লেবেল আলাদা থাকার কারণে তাদের স্বাধীনভাবে বিলম্ব করুন