[英]How to make multiple http requests in my case?
我正在尝试使用工厂对象来发出多个http请求。 我有类似的东西
angular.module('App').factory('myFactory', function($http, $q) {
var service = {};
service.setProduct = function(productObj) {
_productObj = productObj;
}
service.makeRequest = function() {
var deferred = $q.defer();
$http.post('/api/product', _productObj).success(function(data){
var id = data.id
//I am not sure how to chain multiple calls by using promise.
//$http.post('/api/details/, id).success(function(data) {
// console.log(data)
//}
deferred.resolve(data);
}).error(function() {
deferred.reject('error here');
})
return deferred.promise;
}
return service;
});
angular.module('App').controller('productCtrl', ['$scope','$http','myFactory',
function($scope, $http, myFactory) {
myFactory.setProduct(productObj);
myFactory.makeRequest()
.then(function(data) {
console.log(data)
}, function(data) {
alert(data)
})
}
]);
我能够使用myfactory.makeRequest()进行一次调用,但不知道如何链接多个http请求。 有人可以帮帮我吗? 谢谢!
如果您需要发出顺序请求,那么您需要链接承诺。 你甚至都不需要创建自己的deferred
对象- $http.post
已经返回一个承诺,所以你可以只.then
它。
return $http.get("url1")
.then(function(response){
var nextUrl = response.data;
return $http.get(nextUrl);
})
.then(function(response){
var nextUrl = response.data;
return $http.get(nextUrl);
})
.then(function(response){
return response.data;
});
.success
用于更传统的非承诺方法
这是一个吸烟者 。
做一些关于承诺的阅读。 请记住JS在异步中。 您需要在回调中进行下一次服务器调用(第一个.then函数)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.