Как передать параметр map в схему валидатора класса - PullRequest
1 голос
/ 07 апреля 2019

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

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

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

1 Ответ

1 голос
/ 07 апреля 2019

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

...