[英]Wait until a callback ends to continue execution in Angular
我在理解回調如何工作方面遇到了一些問題。 我正在編寫一個必須驗證用戶輸入的函數。 在函數內部,我必須對API進行HTTP GET調用,以根據用戶輸入執行檢查。
問題在於,我從流程函數中調用了validate函數,而在validate()內部進行的HTTP調用之前,則調用了commit函數。 我無法編輯過程功能,因為它是其他組件使用的功能。
form.process = function(){
// do stuffs
validate();
submit();
}
form.validate = function () {
// lots of checks regarding the model
...
// HTTP GET call
}
是否可以讓Submit函數等待validate()內的HTTP GET調用結束?
提前致謝 :)
您必須修改validate以返回如下承諾:
form.validate = function () {
var deferred = $q.defer();
// lots of checks regarding the model
...
// In http GET call:
// If success
deferred.resolve(<any value>);
// If errors
deferred.reject(<any value>);
// and now return the promise
return deferred.promise;
}
現在,您可以在過程函數中執行以下任何操作:
form.process = function(){
// do stuffs
validate().then(function(response){
submit();
}, function(reject){
// do something like showing error.
});
}
如果您有更多使用此功能的組件,則必須像這樣編輯所有組件。 無論如何,這是在組件的每個“驗證”功能中實現其他GET調用的最佳方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.