জাভাস্ক্রিপ্ট: বিরতি সেটটাইমআউট ();


119

যদি আমার একটি সক্রিয় সময়সীমা চলমান থাকে যা দিয়ে সেট করা হয়েছিল var t = setTimeout("dosomething()", 5000),

এটিকে থামিয়ে আবার চালু করার মতো কি আছে?


বর্তমান সময়সীমার বাকি সময়টি পাওয়ার কী কোনও উপায় আছে?
বা আমার একটি ভেরিয়েবলের দরকার আছে যখন টাইমআউট সেট হয়ে গেলে বর্তমান সময়টি সংরক্ষণ করুন, তারপরে আমরা আমরা বিরতি দেব, এখন এবং তার মধ্যে পার্থক্যটি পেয়েছি?


1
যাঁরা ভাবছেন, তাদের বিরাম দেওয়া উদাহরণস্বরূপ: একটি ডিভ 5 সেকেন্ডের মধ্যে অদৃশ্য হয়ে যাবে, 3 সেকেন্ডে (তাই 2 সেকেন্ড বাকি) ডিভের উপর দিয়ে ব্যবহারকারী মাউসগুলি, আপনি সময়সীমাটি বিরতি দিন, একবার ব্যবহারকারীর মাউস ডিভের বাইরে চলে যাবে আপনি এটি আবার চালু করুন, 2 সেকেন্ড পরে এটি অদৃশ্য হয়ে যায়।
হাইলউড

উত্তর:


260

আপনি window.setTimeoutএটির মতো মোড়াতে পারেন, যা আমি মনে করি যা আপনি প্রশ্নের মধ্যে পরামর্শ দিচ্ছিলেন তার অনুরূপ:

var Timer = function(callback, delay) {
    var timerId, start, remaining = delay;

    this.pause = function() {
        window.clearTimeout(timerId);
        remaining -= Date.now() - start;
    };

    this.resume = function() {
        start = Date.now();
        window.clearTimeout(timerId);
        timerId = window.setTimeout(callback, remaining);
    };

    this.resume();
};

var timer = new Timer(function() {
    alert("Done!");
}, 1000);

timer.pause();
// Do some stuff...
timer.resume();

3
@ ইয়্যাকার্ট: ফিরে রোলড, সরি। setTimeout()ইন্টারনেট এক্সপ্লোরার <= 9. এ অতিরিক্ত পরামিতি যুক্ত করা ছাড়া এটি একটি ভাল সংযোজন <= 9.
টিম ডাউন

4
আপনি যদি করেন তবে আপনার timer.resume(); timer.resume();সমান্তরালে দুটি সময়সীমা শেষ হবে। এজন্য আপনি হয় clearTimeout(timerId)প্রথমে শুরু করতে চান বা if (timerId) return;পুনরায় শুরুতে খুব প্রথম দিকে একটি শর্ট সার্কিট করতে চান ।
কার্নেল

2
আরে, আমি এই উত্তরটি পছন্দ করেছি, তবে আমাকে টানতে হয়েছিল: var timerId, start, remaining;বর্গক্ষেত্রের বাইরে এবং remaining = delay;প্যারামিটারটি ধরতে ভিতরে ফিরে যুক্ত করতে হবে। মোহন মত কাজ করে!
ফিলিহপ

1
@ জোশ ৯79৯: আপনার আসলে এটি করার দরকার নেই এবং এটি করা একটি খারাপ ধারণা কারণ এটি ভেরিয়েবলগুলি প্রকাশ করে যা অভ্যন্তরীণ হওয়া উচিত। হতে পারে আপনি কোনও ব্লকের কোড (যেমন একটি অভ্যন্তরে if (blah) { ... }) বা অন্য কিছুর পেস্ট করেছেন ?
টিম ডাউন

1
কিছু কারণে এটি আরম্ভ করার পরে কেবল আমার জন্য একবারে চলে।
পিটারক্সজ

17

এর মতো কিছুতে কৌশলটি করা উচিত।

function Timer(fn, countdown) {
    var ident, complete = false;

    function _time_diff(date1, date2) {
        return date2 ? date2 - date1 : new Date().getTime() - date1;
    }

    function cancel() {
        clearTimeout(ident);
    }

    function pause() {
        clearTimeout(ident);
        total_time_run = _time_diff(start_time);
        complete = total_time_run >= countdown;
    }

    function resume() {
        ident = complete ? -1 : setTimeout(fn, countdown - total_time_run);
    }

    var start_time = new Date().getTime();
    ident = setTimeout(fn, countdown);

    return { cancel: cancel, pause: pause, resume: resume };
}

আমি পরিবর্তন +new Date()করতে new Date().getTime(): যেহেতু এটি দ্রুততর jsperf.com/date-vs-gettime
yckart

9

না, আপনাকে এটি বাতিল করতে হবে ( clearTimeout), আপনি এটি শুরু করার সময়টি মাপুন এবং নতুন সময়ের সাথে এটি পুনরায় চালু করতে হবে।


7

টিম ডাউনস উত্তরের একটি সামান্য পরিবর্তিত সংস্করণ । তবে, যেহেতু টিম আমার সম্পাদনাটি ফিরিয়ে নিয়েছে , তাই আমি নিজেই এই উত্তরটি দিয়েছি। আমার সমাধান argumentsতৃতীয় (3, 4, 5 ...) প্যারামিটার হিসাবে অতিরিক্ত এবং টাইমার সাফ করা সম্ভব করে তোলে :

function Timer(callback, delay) {
    var args = arguments,
        self = this,
        timer, start;

    this.clear = function () {
        clearTimeout(timer);
    };

    this.pause = function () {
        this.clear();
        delay -= new Date() - start;
    };

    this.resume = function () {
        start = new Date();
        timer = setTimeout(function () {
            callback.apply(self, Array.prototype.slice.call(args, 2, args.length));
        }, delay);
    };

    this.resume();
}

টিম যেমন উল্লেখ করেছেন, অতিরিক্ত পরামিতিগুলি উপলভ্য নয় IE lt 9তবে আমি কিছুটা কাজ করেছি যাতে oldIEএটিও কার্যকর হয়।

ব্যবহার: new Timer(Function, Number, arg1, arg2, arg3...)

function callback(foo, bar) {
    console.log(foo); // "foo"
    console.log(bar); // "bar"
}

var timer = new Timer(callback, 1000, "foo", "bar");

timer.pause();
document.onclick = timer.resume;

6

"বিরতি" এবং "পুনরায় শুরু করুন" এর প্রসঙ্গে সত্যিকার অর্থে খুব বেশি অর্থবোধ করবেন না setTimeout, যা এককালের জিনিস। মানে setInterval? যদি তা হয় তবে না, আপনি এটিকে বিরতি দিতে পারবেন না, আপনি কেবল এটি বাতিল করতে পারেন ( clearInterval) এবং তারপরে এটি পুনরায় সময়সূচী করুন। অনুমানের টাইমার বিভাগে এগুলির সমস্ত বিবরণ ।

// Setting
var t = setInterval(doSomething, 1000);

// Pausing (which is really stopping)
clearInterval(t);
t = 0;

// Resuming (which is really just setting again)
t = setInterval(doSomething, 1000);

16
সেটটাইমআউটের প্রসঙ্গে, বিরতি দিন এবং পুনরায় শুরু করা এখনও বুদ্ধিমান।
dbkaplun

6

সময়সীমা সমাধানের পক্ষে যথেষ্ট সহজ ছিল, তবে বিরতিটি ছিল কিছুটা জটিল।

এই সমস্যাগুলি সমাধান করার জন্য আমি নিম্নলিখিত দুটি ক্লাস নিয়ে এসেছি:

function PauseableTimeout(func, delay){
    this.func = func;

    var _now = new Date().getTime();
    this.triggerTime = _now + delay;

    this.t = window.setTimeout(this.func,delay);

    this.paused_timeLeft = 0;

    this.getTimeLeft = function(){
        var now = new Date();

        return this.triggerTime - now;
    }

    this.pause = function(){
        this.paused_timeLeft = this.getTimeLeft();

        window.clearTimeout(this.t);
        this.t = null;
    }

    this.resume = function(){
        if (this.t == null){
            this.t = window.setTimeout(this.func, this.paused_timeLeft);
        }
    }

    this.clearTimeout = function(){ window.clearTimeout(this.t);}
}

function PauseableInterval(func, delay){
    this.func = func;
    this.delay = delay;

    this.triggerSetAt = new Date().getTime();
    this.triggerTime = this.triggerSetAt + this.delay;

    this.i = window.setInterval(this.func, this.delay);

    this.t_restart = null;

    this.paused_timeLeft = 0;

    this.getTimeLeft = function(){
        var now = new Date();
        return this.delay - ((now - this.triggerSetAt) % this.delay);
    }

    this.pause = function(){
        this.paused_timeLeft = this.getTimeLeft();
        window.clearInterval(this.i);
        this.i = null;
    }

    this.restart = function(sender){
        sender.i = window.setInterval(sender.func, sender.delay);
    }

    this.resume = function(){
        if (this.i == null){
            this.i = window.setTimeout(this.restart, this.paused_timeLeft, this);
        }
    }

    this.clearInterval = function(){ window.clearInterval(this.i);}
}

এগুলি যেমন প্রয়োগ করা যেতে পারে:

var pt_hey = new PauseableTimeout(function(){
    alert("hello");
}, 2000);

window.setTimeout(function(){
    pt_hey.pause();
}, 1000);

window.setTimeout("pt_hey.start()", 2000);

এই উদাহরণটি একটি বিরতিযোগ্য টাইমআউট (pt_hey) সেট করবে যা সতর্কতার জন্য নির্ধারিত হয়েছে, "দ্বিতীয়" দুই সেকেন্ড পরে। আরেকটি টাইমআউট এক সেকেন্ড পরে পিটি_হয়ে বিরতি দেয়। তৃতীয় টাইমআউট দুই সেকেন্ড পরে pt_hey পুনরায় শুরু করে। পিটি_এই এক সেকেন্ডের জন্য দৌড়ায়, এক সেকেন্ডের জন্য বিরতি দেয়, তারপরে আবার চলতে শুরু করে। pt_ তারা তিন সেকেন্ড পরে ট্রিগার।

ট্র্যাকিয়ার অন্তর জন্য এখন

var pi_hey = new PauseableInterval(function(){
    console.log("hello world");
}, 2000);

window.setTimeout("pi_hey.pause()", 5000);

window.setTimeout("pi_hey.resume()", 6000);

এই উদাহরণটি কনসোলে প্রতি দুই সেকেন্ডে "হ্যালো ওয়ার্ল্ড" লেখার জন্য একটি বিরতিযুক্ত ইন্টারওয়াল (পিয়াইহে) সেট করে। একটি সময়সীমা পাঁচ সেকেন্ড পরে পাই_হয় বিরতি দেয়। আর একটি টাইমআউট ছয় সেকেন্ডের পরে পাই_ইয়ে শুরু করে। সুতরাং পাই_ই দু'বার ট্রিগার করবে, এক সেকেন্ডের জন্য চলবে, এক সেকেন্ডের জন্য বিরতি দেবে, এক সেকেন্ডের জন্য দৌড়াবে এবং তারপরে প্রতি 2 সেকেন্ডে ট্রিগার চালিয়ে যাবে।

অন্যান্য ফাংশন

  • ক্লিয়ারটাইমআউট () এবং ক্লিয়ারইন্টারওয়াল ()

    pt_hey.clearTimeout();এবং pi_hey.clearInterval();সময়সীমা এবং ব্যবধানগুলি সাফ করার সহজ উপায় হিসাবে পরিবেশন করুন।

  • getTimeLeft ()

    pt_hey.getTimeLeft();এবং pi_hey.getTimeLeft();পরবর্তী ট্রিগারটি হওয়ার সময় নির্ধারিত হওয়া অবধি কত মিলিসেকেন্ডে ফিরে আসবে।


আপনি কি আপনার চিন্তাভাবনা ব্যাখ্যা করতে পারেন, আমাদের বিরতি দেওয়ার জন্য কেন আমাদের একটি জটিল শ্রেণির প্রয়োজন setInterval? আমি মনে করি একটি সরল if(!true) return;কৌশল কৌশলটি করবে, না আমি ভুল করছি?
ইয়াকার্ট

2
আমি এটি করেছি যাতে আপনি আক্ষরিকভাবে বিরতি দিতে পারেন বিরতি দেওয়ার জন্য, যখন কলটি ট্রিগার হয় তখন কেবল কলটি বাদ দেয়। যদি, কোনও গেমটিতে, প্রতি বিদ্যুৎ আপ প্রতি 60 সেকেন্ডে প্রকাশিত হয় এবং আমি আপনার পদ্ধতিটি ব্যবহার করে ট্রিগারটি ঠিক হওয়ার আগে গেমটি থামিয়ে দিয়েছি, আমাকে অন্য পাওয়ার আপের জন্য আরও একটি মিনিট অপেক্ষা করতে হবে। এটি সত্যিই বিরতি দিচ্ছে না, এটি কেবল একটি কলকে উপেক্ষা করছে। পরিবর্তে, আমার পদ্ধতিটি প্রকৃতপক্ষে বিরতি দিচ্ছে, এবং সেইজন্য, গেম-খেলার ক্ষেত্রে পাওয়ার-আপ 'অন-টাইম' প্রকাশিত হয়।
TheCrzyMan

2

অগ্রগতি-বারটি দেখানোর জন্য আমার অতিবাহিত এবং অবশিষ্ট সময় গণনা করা দরকার। গ্রহণযোগ্য উত্তরটি ব্যবহার করা সহজ ছিল না। 'setInterval' এই কাজের জন্য 'setTimeout' এর চেয়ে ভাল। সুতরাং, আমি এই টাইমার ক্লাসটি তৈরি করেছি যা আপনি যে কোনও প্রকল্পে ব্যবহার করতে পারেন।

https://jsfiddle.net/ashraffayad/t0mmv853/

'use strict';


    //Constructor
    var Timer = function(cb, delay) {
      this.cb = cb;
      this.delay = delay;
      this.elapsed = 0;
      this.remaining = this.delay - self.elapsed;
    };

    console.log(Timer);

    Timer.prototype = function() {
      var _start = function(x, y) {
          var self = this;
          if (self.elapsed < self.delay) {
            clearInterval(self.interval);
            self.interval = setInterval(function() {
              self.elapsed += 50;
              self.remaining = self.delay - self.elapsed;
              console.log('elapsed: ' + self.elapsed, 
                          'remaining: ' + self.remaining, 
                          'delay: ' + self.delay);
              if (self.elapsed >= self.delay) {
                clearInterval(self.interval);
                self.cb();
              }
            }, 50);
          }
        },
        _pause = function() {
          var self = this;
          clearInterval(self.interval);
        },
        _restart = function() {
          var self = this;
          self.elapsed = 0;
          console.log(self);
          clearInterval(self.interval);
          self.start();
        };

      //public member definitions
      return {
        start: _start,
        pause: _pause,
        restart: _restart
      };
    }();


    // - - - - - - - - how to use this class

    var restartBtn = document.getElementById('restart');
    var pauseBtn = document.getElementById('pause');
    var startBtn = document.getElementById('start');

    var timer = new Timer(function() {
      console.log('Done!');
    }, 2000);

    restartBtn.addEventListener('click', function(e) {
      timer.restart();
    });
    pauseBtn.addEventListener('click', function(e) {
      timer.pause();
    });
    startBtn.addEventListener('click', function(e) {
      timer.start();
    });

2

/পুনরায় জীবত করা

ES6 সংস্করণ ক্লাস- y সিনট্যাকটিক চিনি ব্যবহার করে 💋

(সামান্য-সংশোধিত: যোগ করা শুরু ())

class Timer {
  constructor(callback, delay) {
    this.callback = callback
    this.remainingTime = delay
    this.startTime
    this.timerId
  }

  pause() {
    clearTimeout(this.timerId)
    this.remainingTime -= new Date() - this.startTime
  }

  resume() {
    this.startTime = new Date()
    clearTimeout(this.timerId)
    this.timerId = setTimeout(this.callback, this.remainingTime)
  }

  start() {
    this.timerId = setTimeout(this.callback, this.remainingTime)
  }
}

// supporting code
const pauseButton = document.getElementById('timer-pause')
const resumeButton = document.getElementById('timer-resume')
const startButton = document.getElementById('timer-start')

const timer = new Timer(() => {
  console.log('called');
  document.getElementById('change-me').classList.add('wow')
}, 3000)

pauseButton.addEventListener('click', timer.pause.bind(timer))
resumeButton.addEventListener('click', timer.resume.bind(timer))
startButton.addEventListener('click', timer.start.bind(timer))
<!doctype html>
<html>
<head>
  <title>Traditional HTML Document. ZZz...</title>
  <style type="text/css">
    .wow { color: blue; font-family: Tahoma, sans-serif; font-size: 1em; }
  </style>
</head>
<body>
  <h1>DOM &amp; JavaScript</h1>

  <div id="change-me">I'm going to repaint my life, wait and see.</div>

  <button id="timer-start">Start!</button>
  <button id="timer-pause">Pause!</button>
  <button id="timer-resume">Resume!</button>
</body>
</html>


1

আপনি ক্লিয়ারটাইমআউট () দেখতে পারেন

বা কোনও নির্দিষ্ট শর্তটি আঘাত হানলে সেট করা একটি গ্লোবাল ভেরিয়েবলের উপর নির্ভর করে বিরতি দিন। মত একটি বোতাম টিপানো হয়।

  <button onclick="myBool = true" > pauseTimeout </button>

  <script>
  var myBool = false;

  var t = setTimeout(function() {if (!mybool) {dosomething()}}, 5000);
  </script>

1

আপনি ইভেন্ট সহ এটি বাস্তবায়ন করতে পারে।

সময়ের পার্থক্য গণনা করার পরিবর্তে, আপনি একটি 'টিক' ইভেন্ট শুনতে শুরু করুন এবং পটভূমিতে চলতে থাকবে:

var Slideshow = {

  _create: function(){                  
    this.timer = window.setInterval(function(){
      $(window).trigger('timer:tick'); }, 8000);
  },

  play: function(){            
    $(window).bind('timer:tick', function(){
      // stuff
    });       
  },

  pause: function(){        
    $(window).unbind('timer:tick');
  }

};

1

যদি আপনি যেকোন উপায়ে jquery ব্যবহার করেন তবে do .ডোটাইমআউটটি দেখুন প্লাগইনটি দেখুন। সেটটাইমআউটের উপরে এই জিনিসটি একটি বিশাল উন্নতি, যার মধ্যে আপনি নির্দিষ্ট করেছেন এমন একক স্ট্রিং আইডি দিয়ে আপনার টাইম আউটগুলিকে ট্র্যাক রাখতে দেওয়া এবং প্রতিবার সেট করার সময় পরিবর্তন হয় না, এবং সহজ বাতিলকরণ, পোলিং লুপ এবং ডিবাউনিং কার্যকর করে এবং আরও অনেক কিছু। আমার সর্বাধিক ব্যবহৃত jquery প্লাগইনগুলির একটি।

দুর্ভাগ্যক্রমে, এটি বাক্স থেকে বিরতি / পুনরারম্ভকে সমর্থন করে না। এর জন্য আপনাকে গ্রহণযোগ্য উত্তরের সাথে অনুরূপভাবে rap .DoTimeout মোড়ানো বা প্রসারিত করতে হবে।


আমি আশা করছিলাম যে ডাইটাইমআউটটি বিরতি / পুনরায় শুরু করবে, তবে সম্পূর্ণ ডকুমেন্টেশন, লুপিং উদাহরণ এবং উত্সটি দেখার সময় আমি এটি দেখছি না। আমি দেখতে পাচ্ছিলাম সবচেয়ে কাছের হ'ল বাতিল, তবে তারপরে আমাকে আবার ফাংশন সহ টাইমারটি পুনরায় তৈরি করতে হবে। আমি কি কিছু রেখে গেলাম?
এরিক্সলা

আপনাকে ভুল পথে নিয়ে যাওয়ার জন্য দুঃখিত আমি আমার উত্তর থেকে সেই অসম্পূর্ণতা মুছে ফেলেছি।
বেন রবার্টস

1

স্লাইডশোর মতো বৈশিষ্ট্যের জন্য আমার সেটটাইমআউট () বিরতি দিতে সক্ষম হওয়া দরকার।

এখানে পসযোগ্য টাইমারটির নিজস্ব বাস্তবায়ন। এটি টিম ডাউনের উত্তরে দেখা মন্তব্যগুলিকে সংহত করে, যেমন আরও ভাল বিরতি (কর্নেলের মন্তব্য) এবং প্রোটোটাইপিংয়ের একধরণের (উমুর গেডিকের মন্তব্য))

function Timer( callback, delay ) {

    /** Get access to this object by value **/
    var self = this;



    /********************* PROPERTIES *********************/
    this.delay = delay;
    this.callback = callback;
    this.starttime;// = ;
    this.timerID = null;


    /********************* METHODS *********************/

    /**
     * Pause
     */
    this.pause = function() {
        /** If the timer has already been paused, return **/
        if ( self.timerID == null ) {
            console.log( 'Timer has been paused already.' );
            return;
        }

        /** Pause the timer **/
        window.clearTimeout( self.timerID );
        self.timerID = null;    // this is how we keep track of the timer having beem cleared

        /** Calculate the new delay for when we'll resume **/
        self.delay = self.starttime + self.delay - new Date().getTime();
        console.log( 'Paused the timer. Time left:', self.delay );
    }


    /**
     * Resume
     */
    this.resume = function() {
        self.starttime = new Date().getTime();
        self.timerID = window.setTimeout( self.callback, self.delay );
        console.log( 'Resuming the timer. Time left:', self.delay );
    }


    /********************* CONSTRUCTOR METHOD *********************/

    /**
     * Private constructor
     * Not a language construct.
     * Mind var to keep the function private and () to execute it right away.
     */
    var __construct = function() {
        self.starttime = new Date().getTime();
        self.timerID = window.setTimeout( self.callback, self.delay )
    }();    /* END __construct */

}   /* END Timer */

উদাহরণ:

var timer = new Timer( function(){ console.log( 'hey! this is a timer!' ); }, 10000 );
timer.pause();

কোডটি পরীক্ষা করার জন্য, timer.resume()এবং ব্যবহার করুনtimer.pause() কয়েকবার কত সময় বাকি রয়েছে তা পরীক্ষা করুন। (আপনার কনসোলটি খোলা আছে তা নিশ্চিত করুন))

SetTimeout () স্থানে এই বস্তুর ব্যবহার হিসাবে সহজ প্রতিস্থাপন হিসাবে timerID = setTimeout( mycallback, 1000)সঙ্গে timer = new Timer( mycallback, 1000 )। তারপরে timer.pause()এবং আপনার timer.resume()জন্য উপলব্ধ।



0

শীর্ষ রেটিং উত্তরের উপর ভিত্তি করে টাইপস্ক্রিপ্ট বাস্তবায়ন

/** Represents the `setTimeout` with an ability to perform pause/resume actions */
export class Timer {
    private _start: Date;
    private _remaining: number;
    private _durationTimeoutId?: NodeJS.Timeout;
    private _callback: (...args: any[]) => void;
    private _done = false;
    get done () {
        return this._done;
    }

    constructor(callback: (...args: any[]) => void, ms = 0) {
        this._callback = () => {
            callback();
            this._done = true;
        };
        this._remaining = ms;
        this.resume();
    }

    /** pauses the timer */
    pause(): Timer {
        if (this._durationTimeoutId && !this._done) {
            this._clearTimeoutRef();
            this._remaining -= new Date().getTime() - this._start.getTime();
        }
        return this;
    }

    /** resumes the timer */
    resume(): Timer {
        if (!this._durationTimeoutId && !this._done) {
            this._start = new Date;
            this._durationTimeoutId = setTimeout(this._callback, this._remaining);
        }
        return this;
    }

    /** 
     * clears the timeout and marks it as done. 
     * 
     * After called, the timeout will not resume
     */
    clearTimeout() {
        this._clearTimeoutRef();
        this._done = true;
    }

    private _clearTimeoutRef() {
        if (this._durationTimeoutId) {
            clearTimeout(this._durationTimeoutId);
            this._durationTimeoutId = undefined;
        }
    }

}

0

সার্ভার সাইডে (নোড.জেএস) সেটটাইমআউটকে পস করার জন্য নীচের মতো করতে পারেন

const PauseableTimeout = function(callback, delay) {
    var timerId, start, remaining = delay;

    this.pause = function() {
        global.clearTimeout(timerId);
        remaining -= Date.now() - start;
    };

    this.resume = function() {
        start = Date.now();
        global.clearTimeout(timerId);
        timerId = global.setTimeout(callback, remaining);
    };

    this.resume();
};

এবং আপনি এটি নীচের হিসাবে চেক করতে পারেন

var timer = new PauseableTimeout(function() {
    console.log("Done!");
}, 3000);
setTimeout(()=>{
    timer.pause();
    console.log("setTimeout paused");
},1000);

setTimeout(()=>{
    console.log("setTimeout time complete");
},3000)

setTimeout(()=>{
    timer.resume();
    console.log("setTimeout resume again");
},5000)


-1

যদি লুকানোর জন্য আপনার বেশ কয়েকটি ডিভ থাকে তবে আপনি পছন্দ করতে কিছু setIntervalএবং একটি চক্র ব্যবহার করতে পারেন :

<div id="div1">1</div><div id="div2">2</div>
<div id="div3">3</div><div id="div4">4</div>
<script>
    function hideDiv(elm){
        var interval,
            unit = 1000,
            cycle = 5,
            hide = function(){
                interval = setInterval(function(){
                    if(--cycle === 0){
                        elm.style.display = 'none';
                        clearInterval(interval);
                    }
                    elm.setAttribute('data-cycle', cycle);
                    elm.innerHTML += '*';
                }, unit);
            };
        elm.onmouseover = function(){
            clearInterval(interval);
        };
        elm.onmouseout = function(){
            hide();
        };
        hide();
    }
    function hideDivs(ids){
        var id;
        while(id = ids.pop()){
            hideDiv(document.getElementById(id));
        }
    }
    hideDivs(['div1','div2','div3','div4']);
</script>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.