从javascript函数返回回调函数的输出

时间:2011-12-01 05:05:08

标签: jquery callback

我正在显示删除确认对话框,我希望用户点击YES或NO的结果为TRUE或FALSE

现在,由于Javascript功能异步,下面代码中的变量 yesDelete 不会等待用户选择确认。

现在,有没有办法将值 r 作为ShowDeleteConfirm()函数的返回值返回?

function ShowDeleteConfirm() { 
    var yesDelete=false;

    jConfirm('Can you confirm this?', 'Confirmation Dialog', function (r) {

        yesDelete = r;

    }); 

    return yesDelete;

}

2 个答案:

答案 0 :(得分:1)

一种方法是将回调函数作为参数传递给ShowDeleteConfirm()jConfirm()。像这样:

function ShowDeleteConfirm(callback) {

    //someone correct me if I'm out of scope here...
    jConfirm('Can you confirm this?', 'Confirmation Dialog', function (r) {

        callback(r);

    });
}

我认为这样可行,但我不确定callback是否属于jConfirm的回调范围。值得一试:)

另一种方法是让jConfirm回调函数在window对象上设置一个全局可见的属性。

无论如何,希望至少有点帮助...

修改

因为JS是异步的,所以我认为您不能根据用户输入ShowDeleteConfirm()返回truefalse。因此需要传递不同的回调函数:ShowDeleteConfirm(yourCallbackFunctionHere)。你可以这样做:

ShowDeleteConfirm(function(result) {
    //result should be true or false
});

但我认为这就像你将得到的那样接近。如果这对你不起作用,那么你应该考虑改变你的设计以适应JS异步的事实。

祝你好运!

答案 1 :(得分:0)

我认为以下是你的情况:

 if (ShowDeleteConfirm()){
 myFunc();
    }

function ShowDeleteConfirm() { 

var yesDelete=false;

jConfirm('Can you confirm this?', 'Confirmation Dialog', function (r) {

    yesDelete = r;
 }); 

return yesDelete;

}

应该是这样的:

ShowDeleteConfirm(myFunc的);

        function ShowDeleteConfirm(myFunc) {     

        jConfirm('Can you confirm this?', 'Confirmation Dialog', function (r) {    
if (r){            
myFunc();
}
         }); 


        }