изменить массив после обещания. все в цикле foreach

Вы хотите, чтобы что-то вроде этого увеличивало квоты размера сообщения в файле App.config или Web.config :

<bindings>
    <basicHttpBinding>
        <binding name="basicHttp" allowCookies="true"
                 maxReceivedMessageSize="20000000" 
                 maxBufferSize="20000000"
                 maxBufferPoolSize="20000000">
            <readerQuotas maxDepth="32" 
                 maxArrayLength="200000000"
                 maxStringContentLength="200000000"/>
        </binding>
    </basicHttpBinding>
</bindings>

И используйте имя привязки в конфигурации вашей конечной точки, например

...
bindingConfiguration="basicHttp"
...

Обоснование значений прост, они достаточно велики, чтобы разместить большинство сообщений. Вы можете настроить это число в соответствии с вашими потребностями. Низкое значение по умолчанию в основном предотвращает атаки типа DOS. Чтобы сделать его 20000000, чтобы распределенная DOS-атака была эффективной, размер по умолчанию для 64k потребовал бы очень большого количества клиентов, чтобы в большинстве случаев превосходить большинство серверов.

0
задан iam batman 19 February 2019 в 09:00
поделиться

1 ответ

Вы можете использовать .map вместо этого и назначить обратно element внутри .then, прикованного к вызову getAmount:

await Promise.all(
  result.map((element) => (
    getAmount(element.dealValue, element.dealType)
      .then((result) => {
         element.IDGfee = result;
      })
  ))
);

(Хотя, как отмечается в комментарии, это не будет дождитесь возвращения каждого ответа, прежде чем присваивать каждому element - ваш текущий код будет выдан перед присваиванием, если какой-либо запрос выдает ошибку, тогда как он может бросить после того, как некоторые свойства были назначены.)

0
ответ дан CertainPerformance 19 February 2019 в 09:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: