একটি সেটটাইমআউট পুনরায় সেট করা


159

আমার নিম্নলিখিতগুলি রয়েছে:

window.setTimeout(function() {
    window.location.href = 'file.php';
}, 115000);

আমি, একটি ক্লিক ফাংশনটির মাধ্যমে, কাউন্টডাউনের মধ্য দিয়ে কাউন্টারকে মাঝখানে পুনরায় সেট করতে পারি?


আপনি সম্ভবত একটি বিদ্যমান ডেবিউ বাস্তবায়ন ব্যবহার করতে পারেন।
আতুরস্যামস

উত্তর:


261

আপনি সেই সময়সীমার একটি রেফারেন্স সঞ্চয় করতে পারেন এবং তারপরে clearTimeoutসেই উল্লেখটি কল করতে পারেন।

// in the example above, assign the result
var timeoutHandle = window.setTimeout(...);

// in your click function, call clearTimeout
window.clearTimeout(timeoutHandle);

// then call setTimeout again to reset the timer
timeoutHandle = window.setTimeout(...);

2
এত আশ্চর্যজনক যে .clear()সময়সীমা অবলম্বন নিজেই নেই।
অটোমেটিকো

16
@ কর্ট3z এর কারণ window.setTimeoutএটি একটি "টাইমআউট অবজেক্ট" নয় একটি নম্বর (টাইমার আইডি) প্রদান করে।
ড্যান হে

2
হ্যাঁ @ ড্যানো: আশ্চর্যজনক যে সেটটাইমআউট কোনও টাইমআউট অবজেক্ট ফেরত দেয় না। একটি নোডজেএস প্রসঙ্গে এটি করে।
কি জাই

25

ক্লিয়ারটাইমআউট () এবং সেটটাইমআউটের রেফারেন্সটি ফিড করুন, যা একটি সংখ্যা হবে। তারপরে এটিকে পুনরায় প্রার্থনা করুন:

var initial;

function invocation() {
    alert('invoked')
    initial = window.setTimeout( 
    function() {
        document.body.style.backgroundColor = 'black'
    }, 5000);
}

invocation();

document.body.onclick = function() {
    alert('stopped')
    clearTimeout( initial )
    // re-invoke invocation()
}

এই উদাহরণস্বরূপ, আপনি যদি 5 সেকেন্ডের মধ্যে শরীরের উপাদানটিতে ক্লিক না করেন তবে পটভূমির রঙ কালো হবে।

রেফারেন্স:

দ্রষ্টব্য: সেটটাইমআউট এবং ক্লিয়ারটাইমআউট ECMAScript নেটিভ পদ্ধতি নয়, তবে বিশ্বব্যাপী উইন্ডো নেমস্পেসের জাভাস্ক্রিপ্ট পদ্ধতি।


9

আপনাকে টাইমআউট "টাইমার" মনে রাখতে হবে, এটি বাতিল করুন, এবং এটি পুনরায় চালু করুন:

g_timer = null;

$(document).ready(function() {
    startTimer();
});

function startTimer() {
    g_timer = window.setTimeout(function() {
        window.location.href = 'file.php';
    }, 115000);
}

function onClick() {
    clearTimeout(g_timer);
    startTimer();
}

1
আকর্ষণীয় যে এই বিকল্পটি উপেক্ষা করা হয়েছে। অন্য সকলের জন্য টাইমার অভ্যন্তরীণ ফাংশনটি নকল করা দরকার বলে মনে হয়, যা শুকনো এবং বেদনাদায়ক কম যদি দু'বার রক্ষণাবেক্ষণের জন্য কয়েকটি কোডের বেশি লাইন থাকে ...
ব্রায়ানলমারিট


2

এই টাইমার 30 সেকেন্ড পরে একটি "হ্যালো" সতর্কতা বাক্সে আগুন দেবে। যাইহোক, আপনি যতবার রিসেট টাইমার বোতামটি ক্লিক করেন এটি টাইমারহ্যান্ডল সাফ করে তারপরে আবার সেট করে। এটি বরখাস্ত হয়ে গেলে, খেলাটি শেষ হয়।

<script type="text/javascript">
    var timerHandle = setTimeout("alert('Hello')",3000);
    function resetTimer() {
        window.clearTimeout(timerHandle);
        timerHandle = setTimeout("alert('Hello')",3000);
    }
</script>

<body>
    <button onclick="resetTimer()">Reset Timer</button>
</body>

2
var redirectionDelay;
function startRedirectionDelay(){
    redirectionDelay = setTimeout(redirect, 115000);
}
function resetRedirectionDelay(){
    clearTimeout(redirectionDelay);
}

function redirect(){
    location.href = 'file.php';
}

// in your click >> fire those
resetRedirectionDelay();
startRedirectionDelay();

এখানে আসলে কী চলছে তার একটি বিশদ উদাহরণ j


1
$(function() {

    (function(){

        var pthis = this;
        this.mseg = 115000;
        this.href = 'file.php'

        this.setTimer = function() { 
            return (window.setTimeout( function() {window.location.href = this.href;}, this.mseg));
        };
        this.timer = pthis.setTimer();

        this.clear = function(ref) { clearTimeout(ref.timer); ref.setTimer(); };
        $(window.document).click( function(){pthis.clear.apply(pthis, [pthis])} );

    })();

});

1

টাইমারটি পুনরায় সেট করতে আপনার টাইমার ভেরিয়েবলটি সেট করে সাফ করতে হবে

$time_out_handle = 0;
window.clearTimeout($time_out_handle);
$time_out_handle = window.setTimeout( function(){---}, 60000 );

25
আরগ, আমি জাভাস্ক্রিপ্টে পিএইচপি স্টাইলের পরিবর্তনশীল নামগুলি ব্যবহার করার বিরুদ্ধে পরামর্শ দিচ্ছি। হ্যাঁ, এটি কাজ করবে, কিন্তু আমার ,শ্বর, এটি বিভ্রান্তিকর।
psynnott

0

আমি জানি এটি একটি পুরানো থ্রেড তবে আমি আজ এটি নিয়ে এসেছি

var timer       = []; //creates a empty array called timer to store timer instances
var afterTimer = function(timerName, interval, callback){
    window.clearTimeout(timer[timerName]); //clear the named timer if exists
    timer[timerName] = window.setTimeout(function(){ //creates a new named timer 
        callback(); //executes your callback code after timer finished
    },interval); //sets the timer timer
}

এবং আপনি ব্যবহার প্রার্থনা

afterTimer('<timername>string', <interval in milliseconds>int, function(){
   your code here
});
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.