2011-05-17 161 views
0

有一个函数只有在单击messageBox上的按钮后,才会返回true/false,以异步处理extjs messagebox。异步处理消息框

function mayGo(){ 
var clicked=false; 
var may=false; 

     Ext.Msg.show({ 
      title:'del?', 
      msg: 'the items will be deleted?', 
      buttons: Ext.Msg.YESNO, 
      fn: function (button){ 
        if (button=='yes'){clicked=true;may=true;} 
        if (button=='no'){clicked=true;may=false;} 
       } 
     }); 

     newf(); 
     function wait(){ 
alert("alert2"); 
       var t=setTimeout(newf(), 5000); 


     } 
     function newf(){ 
      if (!clicked){alert("alert1");wait();} 
     } 
     return may;} 

函数继续执行。哪里不对?为什么超时不起作用?

回答

1

删除从的括号

var t=setTimeout(newf(), 5000); 

等你拿:

var t=setTimeout(newf, 5000); 

newf被执行,那么,你实际上是在设置的newf返回值超时。它相当于:

var und = newf(); // returns undefined 
var t = setTimeout(und , 5000); // wont work. 
+0

我仍然有问题 - newf函数到达最后,在setTimout再次执行之前返回“may” – lvil 2011-05-17 11:30:31