Ich habe ein Array. Während ich durch Array loop, komponiere ich Anfrage und mache http Anrufe. Aber ich möchte, dass jede dieser http PUT-Anforderungen innerhalb von 16 Sekunden Lücke gemacht werden. Ich habe viele Wege ausprobiert. Ich habe versucht, http.then mit $ timeout, $ interval zu Schleife 1 Zeit zu wickeln, Timeout: 16000 zu http config hinzugefügt. Keiner von ihnen verzögert den HTTP-Aufruf. Nur erster Aufruf in der Schleife verzögert. Wie verzögere ich jeden tatsächlichen HTTP-Anruf um 16 Sekunden? Hier ist mein Code. Ich habe Timeout in http Config sowie $ Timeout hinzugefügt. Ich habe es mit einem nach dem anderen versucht. Keine funktioniertAngularJS Verzögerung (Timeout) jeden http Anruf in einer Schleife
angular.forEach($scope.provisionDataArray, function(provReq, index) {
var userProvisionSCIMUrl = someurl;
scimProvReq = prepareProvisionRequestJSON(provReq, $scope.refData, $scope.App);
var scimReq = {
method: 'PUT',
url: someurl,
headers: {
'Content-Type': 'application/json'
},
timeout: 16000,
data: scimProvReq
}
$timeout(function() {
$http(scimReq).then(function successCallback(response) {
var provStatus = {};
provStatus.reqNum = index;
provStatus.nbid = response.data.id;
provStatus.id = response.data.request.id;
provStatus.status = response.data.request.status;
provStatus.statusMessage = response.data.request.statusMessage;
$scope.provisionStatus.push(provStatus);
},
function errorCallback(response) {
$scope.errors.push({
error: "Error processing,
line: index
});
});
},16000,$scope.provisionDataArray.length)
}
});
Hat nicht funktioniert. Da ich ein Array habe, durchlaufe ich Array, schreibe PUT JSON, mache einen http-Aufruf. Während des Schleifens werden http-Aufrufe der Ereigniswarteschlange zur späteren Ausführung hinzugefügt. Die Ereigniswarteschlange wird nicht durch unseren Code verzögert. Das ist das Problem. Es funktioniert, wenn ich keine http-Aufrufe mit in-Schleife habe – StackGuru