使用javascript oops,setInterval无法正常工作

时间:2016-01-11 09:16:58

标签: javascript jquery oop setinterval

Js Fiddle:check here

我在类的方法中有setInterval()。它在创建单个实例时正常工作,但在创建多个实例时失败。创建多个实例时,只有最后创建的实例可以正常工作,其他停止。

我的脚本如下:

   public void getHistory(List<History> arg0) {
        intent = new Intent(
                Constants.HISTORY_RESULT);
        intent.putParcelableArrayListExtra(Constants.MESSAGE,     (ArrayList<History>) arg0);
        getApplicationContext().sendBroadcast(intent);
    }

***in another activity***

 if (action.equals(Constants.HISTORY_RESULT)) {
                onHistory(intent.getParcelableArrayListExtra(Constants.MESSAGE));

2 个答案:

答案 0 :(得分:7)

thi = this;正在全局命名空间中创建,因此每次初始化new timer()时都会被覆盖。

将其更改为var thi = this;

https://jsfiddle.net/daveSalomon/h5e8LLg3/`

我不喜欢thi作为var名称 - 它看起来像是一个错字。我通常使用_this_scope

答案 1 :(得分:0)

试试这个:

 function timer(){
    var thi = this;
    this.ran = Math.floor(Math.random() * 100) + 1;
    this.cls =  this.ran+'_ocar';
    this.div = '<div class="'+this.cls+'">'+this.cls+'</div>';
    $('body').append(this.div);
    this.run = function(){

       thi.k = 0;
       setInterval(function(){
         console.log(thi.cls);
         $('.'+thi.cls).html(thi.k++);
      },1000);
   }
}
one = new timer();
one.run();
setInterval(function(){
  new timer().run();
},5000)

您的变量thi需要在本地声明并移动。