只有在单击messageBox上的按钮处理extjs messagebox异步时,才会返回true / false。
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;}
该功能继续执行。怎么了?为什么超时不起作用?
答案 0 :(得分:1)
从
删除parensvar t=setTimeout(newf(), 5000);
所以你得到:
var t=setTimeout(newf, 5000);
newf
已执行,因此您可以在newf
的返回值上实际设置超时。它相当于:
var und = newf(); // returns undefined
var t = setTimeout( und , 5000 ); // wont work.