簡體   English   中英

如何使用Angular.js的$ http發送同步請求

[英]How to send Synchronous Requests with $http of Angular.js

大家好,我知道這個問題發布了很多,但是沒有什么對我有用的,這就是為什么我問這個問題。問題是我面臨着向php發送同步請求的問題。 這是我的Model函數,正在發送請求。

State.pushData = function () {
    $http({
    method: 'POST',

    url: 'pushData.php?action=pushdata',
    data: {'status': 'push', 'email' : State.campemail},
    headers: {'Content-Type': 'application/x-www-form-urlencoded'}
    }).success(function(response){
        if(response.error){
          console.log(response.error);
          return;
        }
        State.getCartData();
        State.selectedItems = [],
    });
}

此pushData函數將發布請求發送到已定義的url。 並獲取響應。 假定編寫的代碼在最初發送的請求成功后執行“ State.getCartData()”功能。 但這不能以這種方式工作。 這兩個請求都立即執行。 我曾嘗試過$ http和.post,然后嘗試方法,但結果相同。 像這樣

   State.pushData = function () {
    $http.post('pushData.php?action=pushdata',
    {'status': 'push', 'email' : State.campemail}
    ).then(function(response){
        if(response.error){
          console.log(response.error);
          return;
        }
        State.getCartData();
        State.selectedItems = [],
    });
}

我想異步發送請求,一旦執行getCartData()函數后,pushQuote請求完成。 請分享您的經驗。 提前致謝。

經過一番集思廣益,我的問題得到了答案。 我在模型中返回$ http,並在返回的響應上調用.then()。 它的工作原理是我想在第一次成功完成后發送請求。 這是我的模型功能

State.pushData = function () {
  return $http.post('pushData.php?action=pushdata',
  {'status': 'push', 'email' : State.campemail}
  );
}

在上面的函數中,我只是將發布請求發送到服務器,並將其響應返回給控制器函數。 從模型返回后立即執行。 這是我的控制器功能。

scope.pushIt = function() {
  var responseObj = State.pushData();
  responseObj.then(
    function() { //successs call back
      /*Business logic*/
      State.getCartData();
      State.selectedItems = []
    },
    function() { //Error call back
      /*Business logic*/
    }
  );
}

這種方法的優點在於,您可以根據需要使用then方法。 他們將一一執行。

scope.pushIt = function() {
 var responseObj = State.pushData();
  responseObj.then(
  function() { //successs call back
   /*Business logic*/
   },
  function() { //Error call back
   /*Business logic*/
  }
 ).then(
   function() { //successs call back
   /*Business logic*/
   },
   function() { //Error call back
    /*Business logic*/
   }
 );
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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