adelkhalitov
@adelkhalitov
>

В каком месте метод код синхронен?

Есть метод который сравнивает объекты с большой вложенностью. Сортирует объект по алфавиту и все его ключи, далее он транспилирует его в JSON строку и сравнивает как строки.
defference(obj1, obj2) {
        return new Promise(async (res, rej) => {
            let result = [];
            for (let q in obj1) {
                let counter = 0;
                start: for (let w in obj2) {
                    if (await helpers.compareObjects(obj1[q], obj2[w])){ //тупо магическим образом.
                        break start;
                    } else {
                        counter++;
                    }
                }
                if (counter === obj2.length) {
                    result.push(obj1[q]);
                }
            }
            res(result);
        });
    }


Далее сам метод compareObjects

Helpers.prototype.compareObjects = function(firstObj, secondObj) {
	return new Promise(res => {
		if (!!firstObj && JSON.parse(JSON.stringify(firstObj)) == 'string') {
			if (firstObj == secondObj) {
				res(true);
			} else {
				res(false);
			}
		} else { 
			if( JSON.stringify( this.sortObjABS(firstObj) ) !== JSON.stringify( this.sortObjABS(secondObj) ) ) { //Дополнительная проверка массивов и объектов
				res(false);
			}
		}
		res(true);
	})
}


При вызове метода дефференс сервер ожидает его выполнение и полностью блокирует другие потоки.
const fileData      = (baseData)?(await this.defference(objectData, baseData)):objectData;


Метод весь в промисах, полностью пытался избежать синхронности, но в каком то месте я точно ошибся. Укажите прошу на мою ошибку.
  • Вопрос задан
  • 137 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы