2014-03-24 23 views
0

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

javascript代码:

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

其实我要创造我自己在HTML中使用JavaScript的设计确认对话框。

我在这创建了两个按钮,名称是或否

我想打电话给do_action功能,如果我点击Yes或refuse_action如果我点击否按钮。

在此先感谢。

+0

你有什么问题..? –

+2

不清楚你在问什么。提供一个jsfiddle也许 –

+0

是的。我的问题在这里不明确..让我解释一下。 – psukralia

回答

0

试试这个:

function abc(){ 

    ask(function() { 

       do_action(function() { 

        refuse_action(); 

       }); 
     }); 

} 

abc(); 
+0

这既是真的,又是假的行为。提问者希望根据用户输入(来自'ask()')在两个操作之间进行选择。 –

+0

雅我同意你的观点。谢谢你是对的。 –

1

写您的要求函数接受两个函数(一个是,一个没有):

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

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

1

你在找什么是$.Deferred()在jQuery中。 为了达到此目的,您的功能必须返回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

相关问题