簡體   English   中英

等待回調結束以繼續在Angular中執行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM