Цикл while - как убрать дублирование кода

Это может быть не самый лучший способ, но вот что мне нужно было сделать, поскольку моя версия jquery не самая новая, мне пришлось сохранить функцию ajax в переменное имя xhr, чтобы получить заголовок ответа

success: function (data) {
 var disposition = xhr.getResponseHeader('content-disposition');
 var matches = /"([^"]*)"/.exec(disposition);
 var filename = (matches != null && matches[1] ? matches[1] : 'file.pdf');

 var blob = new Blob([data], {type: 'application/pdf'});
 var link = document.createElement('a');
 link.href = window.URL.createObjectURL(blob);
 link.download = filename;

 document.body.appendChild(link);

 link.click();

 document.body.removeChild(link);

}

, адаптированный из https://nehalist.io/downloading-files-from-post-requests/

-1
задан melpomene 19 January 2019 в 00:39
поделиться

1 ответ

Прямое упрощение вашего кода:

while (
  some_very_long_computation &&
  another_very_long_computation
) {
  ...
}

Если вы хотите сохранить переменные a и b:

bool a, b;
while (
  (a = some_very_long_computation) &&
  (b = another_very_long_computation)
) {
  ...
}

Если вы не хотите чтобы поместить условия в условие while:

while (true) {
  bool a = some_very_long_computation;
  bool b = another_very_long_computation;
  if (!(a && b)) {
    break;
  }
  ...
}

Вы также можете создать вспомогательные лямбды (которые имеют доступ к локальным переменным):

auto fa = [&]() { return some_very_long_computation; };
auto fb = [&]() { return another_very_long_computation; };
while (fa() && fb()) {
  ...
}
0
ответ дан melpomene 19 January 2019 в 00:39
поделиться
Другие вопросы по тегам:

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