处理消息框异步

时间:2011-05-17 10:33:05

标签: javascript extjs

只有在单击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;}

该功能继续执行。怎么了?为什么超时不起作用?

1 个答案:

答案 0 :(得分:1)

删除parens
var t=setTimeout(newf(), 5000);

所以你得到:

var t=setTimeout(newf, 5000);

newf已执行,因此您可以在newf的返回值上实际设置超时。它相当于:

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