呼叫时无法停止运行任务Ext.TaskManager.stop()方法

问题描述:

我设置了一个消息框来显示当前时间。定时器间隔设置为1000,并且有2个按钮用于启动和停止'计时器'。当点击“停止”按钮时,它会调用Ext.TaskManager.stop方法并将消息框中的文本更新为“已暂停”。然而,当点击“停止”按钮并且文本仅改变为“暂停”时,它就会重新显示当前时间。当我尝试使用Ext.TaskManager.stopAll();而不是Ext.TaskManager.stop(任务),它的工作原理!为什么?我的代码如下:呼叫时无法停止运行任务Ext.TaskManager.stop()方法

<script type="text/javascript"> 
Ext.onReady (function(){ 
      var config={ 
      msg:'Display Time', 
      modal:true, 
      buttons:Ext.Msg.OKCANCEL, 
      fn:displayTime 
      } 

     Ext.MessageBox.msgButtons[0].setText('Start'); 
     Ext.MessageBox.msgButtons[3].setText('Stop');     
     Ext.MessageBox.show(config); 
     function displayTime(id){ 
      if(id=='ok'){ 
       var task = { 
        run:function(){Ext.MessageBox.updateText ('????:' + Ext.util.Format.date(new Date(), 'Y-m-d g:1:s A'));},   
        interval:1000        
        }     
       Ext.TaskManager.start(task); 
      }    
      else { 
       Ext.MessageBox.updateText('Paused!'); 
       Ext.TaskManager.stop(task); 
      }  
    };  
    }); 

的任务是在如果是这样,当其他人在打它基本上运行Ext.TaskManager.stop()这不会阻止你的任务定义。将您的任务移到函数声明之外。

 var task = { 
      run: function() { 
       Ext.MessageBox.updateText('????:' + Ext.util.Format.date(new Date(), 'Y-m-d g:1:s A')); 
      }, 
      interval: 1000 
     } 


     function displayTime(id) { 
      if (id == 'ok') { 
       Ext.TaskManager.start(task); 
      } else { 
       Ext.MessageBox.updateText('Paused!'); 
       Ext.TaskManager.stop(task); 
      } 
     };