我正试图在我的指令中从监视器内部调用$ http服务。假设,该指令被放在多个输入元素上。如果所有元素的值一起变化,则手表会背靠背并且$ http也会被反复调用,有时会使每个$ http调用的响应变得混乱,即连续的$ http调用,即使输入不同回应是一样的。为这种情况构造代码的正确方法是什么?我能用诺言来解决这个问题。如果是,那么考虑到这是相同的$ http调用,如何使用不同的输入调用。
obj = new JSONObject(var1);
//other objects
JsonArray jsonArr = obj.getJsonArray("phone");
for(obj:jsonArr){
System.out.println("phone:" + obj);
}
答案 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
});
});