Как передать параметр карты внутри схемы валидатора класса

Я пытаюсь передать каждый параметр функции карты в функцию проверки, но переменная внутри функции проверки дает последнее значение функции карты

result = jsonData.map(async (id, index) => {
        customerInfo = getInfos(id, index);

        console.log("map " + customerInfo.id);

        return validate("customerSchema", id).then(errors => {

        console.log("validate " + customerInfo.id);

          if (errors.length > 0) {
            throw new HttpException(
              {
                status: HttpStatus.FORBIDDEN,
                error: errors[0].constraints
              },
              403
            );
          }

        });
      });

ожидаемый результат:

map 1
validate 1
map 2
validate 2

фактический выход:

map 1
map 2
validate 2
validate 2

почему валидация дважды получает второй идентификатор?


person muklah    schedule 07.04.2019    source источник


Ответы (1)


Если вы используете функцию async, используйте await вместо then. Вы получите ожидаемый результат при использовании await, поскольку элемент управления будет ждать выполнения метода validate, но с then элемент управления просто выполнит материал внутри затем в другом потоке и продолжите выполнение функции map в основном потоке.

person Neeraj Sewani    schedule 07.04.2019