我需要調用一些功能序列的形式提交按鈕點擊 -設置一系列同步/異步函數的正確方法,所有這些都可以停止表單提交和進一步處理?
FUNC1() - > FUNC2() - > FUNC3() - > func7() - > ...
所有這些函數都會進行某種驗證/檢查,如果驗證失敗,則向用戶顯示一個確認對話框。如果用戶確認,則執行隊列中的下一個功能。
這些函數中的任何一個都可以執行一些異步任務,例如發送Ajax請求,並根據結果顯示用戶一些確認對話框。
詳細
我有以下結構異步函數 -
function preValidateUrls(evt)
{
evt.preventDefault();
$.ajax({
type: "POST",
url: posturl+"?"+params,
dataType: "json",
success: function(res)
{
//display some confirmation dialog
if(confirm(msg))
{
$("form#frmBanners").submit();
}
}
});
}
我該怎麼辦呢?
首先我不得不這樣定義兩個同步功能 -
<form onsubmit="return func3()">
...
...
<input type="submit" onclick="return func1()"/>
</form>
FUNC1()被調用起初,顯示確認對話框,然後FUNC2()...
然後,我定義了異步函數func2()(與上面顯示的結構相同)並將其稱爲像這樣 -
$(「input#formsubmitbutton」)。click(func2);
但是,正如預期的,這不等待FUNC1的確認()。
如果我喜歡下面的功能
func2
被一次又一次地被稱爲 -$( '形式#frmBanners')提交(函數() { 回報FUNC2();//這是在preValidateUrls() })之後調用的;
我如何在一個乾淨的方式做到這一點,所以當我需要在兩者之間添加任何同步/異步函數的明天,我只需要在一個地方進行編輯,像 -
func1() -> func2() -> func3() ... -> func7()
PS - 我知道,如何在javascript中使用回調函數。
請看看你是否可以回答這個相關的問題http://stackoverflow.com/questions/13234386/using-deferred-with-jquery-ajax-calls-and-async-processes-along-with-user-confir –