Ich habe ein Array queue
, dass ich Objekte an sie schieben, wenn sie geändert werden. Wenn der Benutzer save
drückt, werde ich die queue
Schleife durchlaufen und den entsprechenden API-Aufruf für sie anwenden.JavaScript .map auf ein Array und Entfernen von Elementen, wenn die Bedingung erfüllt
Wenn der API-Aufruf erfolgreich ausgeführt wird, möchte ich das Element aus dem queue
entfernen, andernfalls behalten Sie es im Inneren und benachrichtigen Sie den Benutzer, dass einige Elemente nicht erfolgreich gespeichert wurden. Ich habe dies derzeit (in AngularJS)
var unsuccessfulItems = [];
var promise = queue.map(function(item) {
var defer = $q.defer();
myCallFunction(item
, function(response) {} // Success
, function(response) { // Error
unsuccessfulItems.push(item);
}
)
defer.resolve();
return defer.promise;
})
// Once all items have been processed
$q.all(promise).then(function() {
queue = unsuccessfulItems;
});
Gibt es eine bessere Möglichkeit, dies zu tun?
Scheint, dass 'filter' erforderlich ist: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter? –