从指令中调用angularjs中的$ http

时间:2018-06-13 09:00:14

标签: angularjs angularjs-directive angular-promise

我正试图在我的指令中从监视器内部调用$ http服务。假设,该指令被放在多个输入元素上。如果所有元素的值一起变化,则手表会背靠背并且$ http也会被反复调用,有时会使每个$ http调用的响应变得混乱,即连续的$ http调用,即使输入不同回应是一样的。为这种情况构造代码的正确方法是什么?我能用诺言来解决这个问题。如果是,那么考虑到这是相同的$ http调用,如何使用不同的输入调用。

obj = new JSONObject(var1);
//other objects
JsonArray jsonArr = obj.getJsonArray("phone");

for(obj:jsonArr){
  System.out.println("phone:" + obj);
}

1 个答案:

答案 0 :(得分:0)

在承诺的帮助下解决。使用$q.when()(与$q.resolve()相同)创建一个使用给定值立即解析的promise。对于数组中的每个元素,构造$http调用并将其添加到promise链中。迭代完所有元素后,每个调用的调用顺序与链中添加的顺序相同。

 var promiseChain = $q.when();
    scope.elementArray.forEach(function(elem) {
          //Initiate a chain of promises for each REST call
           promiseChain = promiseChain.then(function() {
             return $http({
                            method: 'POST', 
                            url: someURL,       
                            data : someData
                        });
           });  
           //Each promise in the chain is then resolved individually in the order in which they were invoked.
           promiseChain.then(function(response) {
                //do stuff here after each call returns individually                
           });                      
    });