2011-05-17 203 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