Ich habe Arbeitsgruppen, wobei diese Gruppen haben Aufgaben. Sie können vorhandene Aufgaben zu Ihrer Gruppe hinzufügen, aber auch neue hinzufügen. Diese neue haben keine _id noch in meinem mongoDB, also muss ich sie zuerst machen, bevor mein createTaskGroup Anruf.für Asynchron-HTTP-Anfragen warten, bevor Sie fortfahren Winkel
Als ich createTaskGroup nennen, ich Schleife durch die Aufgaben, wenn es keine _id ist, nenne ich „addnewtask“. Das Problem ist, dass die letzte Funktion "apiFactory.createTaskGroup" vor der Schleife aufgerufen wird, um nicht existierende Aufgaben zu erledigen.
Wie kann ich warte auf diese Funktionen vor createTaskGroup Ausführung zu beenden?
Ich versuchte auch mit Versprechungen, normalerweise verwende ich Rückrufe, aber ich lese über $ q.all. Also würde ich es versuchen. Aber dann kann ich mich über die cors beschweren, sogar es ist der gleiche Ruf wie zuvor, aber mit dem Einsatz von Versprechen. Hier
dvm.createTaskGroup = function(){
var callsToWaitForBeforeContinue = [];
var tempArrayWithTasksWithId = [];
angular.forEach(dvm.taskgroup.tasks, function(task){
if(angular.isUndefined(task._id)){
callsToWaitForBeforeContinue.push(apiFactory.addNewTaskWithPromise(task.description));
}
else{
tempArrayWithTasksWithId.push(task);
}
});
$q.all(callsToWaitForBeforeContinue).then(function(req){
dvm.taskgroup.tasks = tempArrayWithTasksWithId;
angular.forEach(req, function(singlePromise){
dvm.taskgroup.tasks.push(singlePromise);
});
});
apiFactory.createTaskGroup(dvm.taskgroup, function (response) {
$mdDialog.hide(dvm.taskgroup);
});
};
ist die http Post selbst.
var addNewTaskWithPromise = function(taskDescription){
var q = $q.defer();
$http.post(ENV.api + 'tasks/', taskDescription).then(function(response){
q.resolve(response);
}, errorCallback);
return q.promise;
};
Können Sie Ihren Werkscode auch posten? Das ist wahrscheinlich, wo Sie Versprechen nutzen wollen. –
meinst du meinen Service? Der neueste Codeblock ist mein Service. Ich weiß, dass meine Architektur nicht auf den Punkt kommt. Es ist für mein Praktikum, vor April hatte ich keine Erfahrung mit eckigen, sogar Javascript im Allgemeinen, ich war sehr glücklich, dass alles funktioniert hat. – user1008531