AngularJs。使用 $q.all 发送多个 post 请求
AngularJs. Using $q.all for sending multiple post requests
我有一个 AngularJs 应用程序,我需要在其中循环调用 $http post。这是我的代码:
var promisesArray = [];
for(i = 0; i < 28; i++) {
promisesArray.push($http({
method: "post",
url: "/studentanswers",
data: {
studentName: "abc",
answerImage: "sdf",
questionPrompt: 1
}
}));
}
$q.all(promisesArray).then(function(data){
console.log("success!!!!");
});
出于某种原因,它没有post收集集合中的所有项目。我知道浏览器通常不允许超过 6 个异步 post 调用。据我了解, $q.all 是一种解决方法。此外,即使我注释掉 $q.all 部分,也没关系,因为 post 调用仍然会执行。
如有任何帮助,我将不胜感激!
请注意 $q.all
没有弹性 。它将以第一个被拒绝的承诺终止。但这真的不是你的问题。
您需要链接您的帖子以避免浏览器同时发布帖子的限制。
var promisesList = [];
var promiseMinusOne = $q.when();
for (var i = 0; i < 28; i++) {
//begin IIFE closure
function(i) {
//chain off promiseMinusOne
var httpPromise =
promiseMinusOne.catch (function (e) {
return e;
}) .then (function (r) {
return $http({ method: "post",
url: "/studentanswers",
data: answerList[i]
})
});
promisesList.push(httpPromise);
promiseMinusOne = httpPromise;
}(i);
//end IIFE closure
};
var chainablePromise =
promiseMinusOne.catch (function (e) {
return (e);
}) .then (function (r) {
//process the promisesList
});
请注意,对于 promiseMinusOne
,使用 .catch
和 return
以便在其中一项被拒绝时继续列表。
我有一个 AngularJs 应用程序,我需要在其中循环调用 $http post。这是我的代码:
var promisesArray = [];
for(i = 0; i < 28; i++) {
promisesArray.push($http({
method: "post",
url: "/studentanswers",
data: {
studentName: "abc",
answerImage: "sdf",
questionPrompt: 1
}
}));
}
$q.all(promisesArray).then(function(data){
console.log("success!!!!");
});
出于某种原因,它没有post收集集合中的所有项目。我知道浏览器通常不允许超过 6 个异步 post 调用。据我了解, $q.all 是一种解决方法。此外,即使我注释掉 $q.all 部分,也没关系,因为 post 调用仍然会执行。
如有任何帮助,我将不胜感激!
请注意 $q.all
没有弹性 。它将以第一个被拒绝的承诺终止。但这真的不是你的问题。
您需要链接您的帖子以避免浏览器同时发布帖子的限制。
var promisesList = [];
var promiseMinusOne = $q.when();
for (var i = 0; i < 28; i++) {
//begin IIFE closure
function(i) {
//chain off promiseMinusOne
var httpPromise =
promiseMinusOne.catch (function (e) {
return e;
}) .then (function (r) {
return $http({ method: "post",
url: "/studentanswers",
data: answerList[i]
})
});
promisesList.push(httpPromise);
promiseMinusOne = httpPromise;
}(i);
//end IIFE closure
};
var chainablePromise =
promiseMinusOne.catch (function (e) {
return (e);
}) .then (function (r) {
//process the promisesList
});
请注意,对于 promiseMinusOne
,使用 .catch
和 return
以便在其中一项被拒绝时继续列表。