উত্তর:
অন্যরা সেট ইন্টেরওয়াল এবং সেটটাইমআউটটি কৌশলটি দেখায়। আমি একটু আরো উন্নত পন্থা যা আমি পল আইরিশ দ্বারা এই চমৎকার ভিডিও থেকে শিখেছি হাইলাইট করতে চেয়েছিলাম: http://paulirish.com/2010/10-things-i-learned-from-the-jquery-source/
পর্যায়ক্রমিক কাজগুলির জন্য যা পুনরাবৃত্তি ব্যবধানের চেয়ে বেশি সময় নেয় (ধীর সংযোগে এইচটিটিপি অনুরোধের মতো) এটি ব্যবহার না করা ভাল setInterval()
। যদি প্রথম অনুরোধটি সম্পন্ন না হয় এবং আপনি আর একটি শুরু করেন, আপনি এমন পরিস্থিতিতে শেষ করতে পারেন যেখানে আপনার একাধিক অনুরোধ রয়েছে যা ভাগ করে নেওয়া সংস্থান ব্যবহার করে এবং একে অপরকে অনাহারে ফেলে। শেষটি শেষ না হওয়া পর্যন্ত আপনি পরবর্তী অনুরোধের সময়সূচির জন্য অপেক্ষা করে এই সমস্যাটি এড়াতে পারেন:
// Use a named immediately-invoked function expression.
(function worker() {
$.get('ajax/test.html', function(data) {
// Now that we've completed the request schedule the next one.
$('.result').html(data);
setTimeout(worker, 5000);
});
})();
সরলতার জন্য আমি সময় নির্ধারণের জন্য সাফল্য কলব্যাক ব্যবহার করেছি। এর নীচের দিকের একটি ব্যর্থ অনুরোধ আপডেটগুলি থামিয়ে দেবে। এটি এড়াতে আপনি পরিবর্তে সম্পূর্ণ কলব্যাক ব্যবহার করতে পারেন:
(function worker() {
$.ajax({
url: 'ajax/test.html',
success: function(data) {
$('.result').html(data);
},
complete: function() {
// Schedule the next request when the current one's complete
setTimeout(worker, 5000);
}
});
})();
হ্যাঁ, আপনি যে কোডটি চালাতে চান তাতে আপনি জাভাস্ক্রিপ্ট setTimeout()
পদ্ধতি বা setInterval()
পদ্ধতিটি ব্যবহার করতে পারেন । সেটটাইমআউট দিয়ে আপনি এটি কীভাবে করতে পারেন তা এখানে:
function executeQuery() {
$.ajax({
url: 'url/path/here',
success: function(data) {
// do something with the return value here if you like
}
});
setTimeout(executeQuery, 5000); // you could choose not to continue on failure...
}
$(document).ready(function() {
// run the first time; all subsequent calls will take care of themselves
setTimeout(executeQuery, 5000);
});
আমি নীচের কোডটি চেষ্টা করেছিলাম,
function executeQuery() {
$.ajax({
url: 'url/path/here',
success: function(data) {
// do something with the return value here if you like
}
});
setTimeout(executeQuery, 5000); // you could choose not to continue on failure...
}
$(document).ready(function() {
// run the first time; all subsequent calls will take care of themselves
setTimeout(executeQuery, 5000);
});
এটি নির্দিষ্ট বিরতি হিসাবে প্রত্যাশার মতো কাজ করে নি, পৃষ্ঠাটি পুরোপুরি লোড হয়নি এবং ক্রিয়াটি অবিচ্ছিন্নভাবে ডাকা হয়েছিল। তার ভাল ডাকতে setTimeout(executeQuery, 5000);
বাইরে executeQuery()
নীচের হিসাবে একটি পৃথক ফাংশন মধ্যে,
function executeQuery() {
$.ajax({
url: 'url/path/here',
success: function(data) {
// do something with the return value here if you like
}
});
updateCall();
}
function updateCall(){
setTimeout(function(){executeQuery()}, 5000);
}
$(document).ready(function() {
executeQuery();
});
এটি ঠিক মতো কাজ করেছিল।