Angularjs 如何在angular js中延迟循环包装的$http get请求?
我有一个功能,检查记录,如果它们存在,它会为每个项目下载它们。这是一个在循环中发生的函数,因此可以有许多记录。我认为我正确地使用了$Q来解除每个$http请求的限制,以便一个接一个地等待一个请求,这样它们就不会同时发生,但它们仍然同时发出 我见过$q;但我不明白如何在我的实现中使用它。将每次呼叫推迟到之前的一次呼叫完成后,如何正确编写Angularjs 如何在angular js中延迟循环包装的$http get请求?,angularjs,promise,http-get,deferred,Angularjs,Promise,Http Get,Deferred,我有一个功能,检查记录,如果它们存在,它会为每个项目下载它们。这是一个在循环中发生的函数,因此可以有许多记录。我认为我正确地使用了$Q来解除每个$http请求的限制,以便一个接一个地等待一个请求,这样它们就不会同时发生,但它们仍然同时发出 我见过$q;但我不明白如何在我的实现中使用它。将每次呼叫推迟到之前的一次呼叫完成后,如何正确编写 CheckRecords: function(obj) { var promise; var promises = []; if (ob
CheckRecords: function(obj) {
var promise;
var promises = [];
if (obj.BD.img == 'checkedRecord') {
var objBDUrl = 'services/GetSurveyBD/?id=' + obj.BD.ID;
promise = $timeout(function(){
$http.get(objBDUrl, { cache: true }).then(function(response) {
obj.BD.ID = obj.BD.ID;
obj.BD.data = response.data;
});
}, 250);
promises.push(promise);
}
if (obj.MR.img == 'checkedRecord') {
var objMRUrl = 'services/GetMR/?id=' + obj.MR.ID;
promise = $timeout(function(){
$http.get(objMRUrl, { cache: true }).then(function(response) {
obj.MR.ID = obj.MR.ID;
obj.MR.data = response.data;
});
}, 250);
promises.push(promise);
}
$q.all(promises).then(function(){
return obj;
});
}
函数$q.all只是确保所有请求都已完成,请求仍会立即执行,但其结果会延迟。如果要控制执行顺序,请在结果函数中执行请求。$q
-模块ng中的服务
一种服务,可帮助您异步运行函数,并在完成处理时使用其返回值或异常