回调函数立即执行

时间:2013-01-29 16:30:46

标签: javascript

我有一个确认弹出窗口,询问是或否,这是代码:

Confirm({
    Title: 'Warning',
    Message: 'Are you sure?',
    Buttons: [{
        text: 'Yes',
        callback: function(){
            RRSubmitRemoveReportRequest($(this));
        },
        highlighted: true
    }, {
        text: 'No)',
        callback: null,
        type: 'no'
    }]
});

如果发送参数$(this),我应该使用匿名函数,否则它会立即调用函数,有人可以解释一下吗? 感谢

2 个答案:

答案 0 :(得分:4)

通过一个例子很容易理解:

function foo(i){
    return i*10;
}

var x = foo(1); // execute foo with 1 parameter;

var x = function(){ // creates a callback to the foo function.
    foo(1);
};

var x = foo; // pointer to foo function and then:
x(1);

最重要的是,回调应该是函数,将来会在某个地方调用,而不是函数的值。

答案 1 :(得分:2)

callback属性需要设置为function

如果你这样做:

callback: RRSubmitRemoveReportRequest($(this))

您要将callback设置为RRSubmitRemoveReportRequest功能的返回值

你需要传递一个函数。 RRSubmitRemoveReportRequest是一个函数,RRSubmitRemoveReportRequest($(this))是一个函数调用,所以它已经运行并且使用了它的返回值。

当你这样做时:

callback: function(){
    RRSubmitRemoveReportRequest($(this));
}

您正在传递一个函数,在调用时,将正确调用RRSubmitRemoveReportRequest