我在解釋回調的工作方式時遇到了一些問題。 我在寫一個必須驗證用戶輸入的函數。 在函數內部,我必須對我的API進行HTTP GET調用,以根據用戶輸入進行檢查。等到回調結束後繼續在Angular中執行
問題是驗證函數是從進程函數調用的,並且在我使用validate()進行的HTTP調用之前調用提交函數。 我無法編輯處理函數,因爲它是其他組件使用的函數。
form.process = function(){
// do stuffs
validate();
submit();
}
form.validate = function() {
// lots of checks regarding the model
...
// HTTP GET call
}
是否有可能讓submit函數等到validate()內的HTTP GET調用結束?
感謝提前:)
你的'validate'函數是否返回任何'deferred'或'promise'? – Jag
如果你不能編輯'process',那麼你的運氣不好。 HTTP請求總是異步的,所以'submit()'將在HTTP請求返回之前運行。 (好吧,顯然[你可以讓他們同步](http://stackoverflow.com/questions/133310/how-can-i-get-jquery-to-perform-a-synchronous-rather-than-asynchronous-ajax- ),但它會使瀏覽器掛起。) – Thomas
我很困惑...爲什麼你不能編輯過程函數?它調用驗證函數,所以即使其他組件正在使用過程函數,它仍然調用驗證函數,如果這不起作用,那麼當其他組件調用它時它也不會工作... – Ted