如何在javascript中调用一个函数内的三个函数每个函数应该在完成后调用

时间:2014-03-24 11:34:16

标签: javascript jquery

如何在javascript中调用一个函数内的三个函数每个函数都应在完成第一个函数后调用,该函数由用户接收一些值。

javascript代码:

function abc(){
    var ans  = ask(); /// contain html custom confirm with button
    if(ans == true)
    {
        do_action();
    }
    else
    {
        refuse_action()
    }
}

实际上我想在html中使用设计创建自己的javascript确认对话框。

我在其中创建了两个按钮,名称为Yes或No

如果单击No按钮,我想调用do_action函数,如果单击No按钮,则调用refuse_action。

提前致谢。

4 个答案:

答案 0 :(得分:1)

编写你的ask函数接受两个函数(一个用于yes,一个用于no):

function abc(){
    var ans  = ask(function(){
                   do_action();
               }, 
               function(){
                   refuse_action()
               }); /// contain html custom confirm with button
}

这样一个简单的是/否的情况并不保证用jQuery承诺编写它的开销,但这是另一种选择。 (见UweB的回答)。

答案 1 :(得分:1)

您在jQuery中寻找的是$.Deferred()。 为了使其正常工作,您的函数必须返回promise

不详细说明,这是您正在寻找的一般结构:

function showDialog() {
    var ret = $.Deferred();

    // Render your confirm dialog, and show it
    // The 'OK'-button needs to call ret.resolve();
    // Call ret.reject() when the user clicks 'Cancel'.

    return ret.promise();
}

调用函数必须执行以下操作:

function callingFunction() {
    var x = showDialog();

    x.done(function() {
        // Put the code to be executed when the user clicks 'OK' in your dialog.
    });

    x.fail(function() {
        // Put the code to be executed when the user clicks 'Cancel' in your dialog.
        // You can omit hooking the .fail() function up, if you don't need to do anything.
    });
}

有关详细信息,请仔细查看description of the idea behind $.Deferred()以及$.Deferred API

答案 2 :(得分:0)

试试这个:

function abc(){

     ask(function() { 

                do_action( function() { 

                     refuse_action();

                });
        }); 

}

abc();

答案 3 :(得分:0)