Привет всем. Столкнулся с проблемой, если кто-то может, помогите )
Есть коллекция объектов. У каждой коллекции есть ключ modified (true/false), чтобы определить редактировалась ли коллекция или нет, при отправке на сервер.
Допустим я беру и отрисовываю на странице одну из коллекции в виде таблицы, изменю там данные и так далее, проставляю самой коллекции modified (true) и вложенным объектам(строкам таблицы), которые были изменены, тоже проставляю modified (true).
Дальше запускаю метод в котором выполняется отправка изменени на сервер с помощью axios put и вот тут у меня возникает проблема.
Когда я пробегаюсь циклом по объекту, нахожу объекты у которых modified (true), я их отправляю и на них у меня стоит Promise, тут все норм. После успешной отправки я ставлю им статус false
Но, как мне сделать так, чтоб я мог дождаться не только отправки одного объекта, а дождаться когда все операции замены будут проведены и после этого, если все пройдет успешно, проставить уже статус modified (false) у самой коллекции???
function Storeage() {
this.objects = [];
}
/*метода синхронизиурет данные из коллекции хранилища на сервер*/
Storeage.prototype.saveToDBbyRest = function() {
const collections = this.objects;
for ( var key in collections ) {
if ( collections[key].modified === true ) {
let nameCollection = collections[key].nameCollection;
let obj_collection = collections[key].dataObj;
for (var i = 0; i < obj_collection.length; i++) {
let obj_collection_item = obj_collection[i];
if ( obj_collection_item.modified === true ) {
this.putCollection(nameCollection, obj_collection_item, collections[key]);
}
}
// this.modifiedStatus(collections[key], false); Этот метод нужно вызвать после того, как все изменения уйдут на сервер.
}
}
}
Storeage.prototype.putCollection = function(name, item_collection, collection) {
let id_obj = item_collection.id;
let item_obj = item_collection.dataObj;
/*axios put*/
apiServices.putResult(name+'/'+id_obj+'.json', item_obj)
.then(result => {
if (result.data === 1) { console.log('Строка с ID - ' + id_obj + ' была изменена') }
if (result.data === 0) { console.log('Строка с ID - ' + id_obj + ' не может быть отредактирована, возможно ее уже не существует') }
this.modifiedStatus(item_collection, false);
})
.catch(error => {
console.log('Ошибка в методе putResult, при отправки на сервер, что-то пошло не так')
})
}
Ну и вот как выглядит сама коллекция.